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?