I have recently developed a half-float/16-bit float library (link to Github) for Zilog Z80. It was a part of my project to run some neural network and graphics POCs for ZX Spectrum.
The library uses IEEE 754 format and supports both inf/nan and subnormal values.
I implemented addition, subtraction and multiplication in assembly and still have some functions in C (division, comparison, to/from int, to string) need to be ported to assembly and some new (sqrt/log/exp/trigonometry). So it is work in progress.
Most importantly I found it to be virtually as fast as fixed precision calculations for many real applications. For example, multiplication of float16 is actually faster than fixed4:12 because it requires multiplication of 11 significant bits instead of 16.
Here some runtime results:
3d graphics with object rotation :
f16: 10.16s/4.9FPS
fix: 9.82s/5.0FPS
Mandelbrot 256 by 192 pixels
f16: 33:53
fix: 19:43
Neural network training mnist digits 0-1
type: train/test
f16: 1:53/0:37
fix: 1:48/0:34
I this it can be very valuable since it provides quite a large dynamic range and performance close to fixed point computing, being much faster and having much smaller data footprint than full 32-bit floating point one.
Question: where can I find communities that can be interested/benefit from such a project?