Half-precision floating-point format -

In computing, half precision is a binary floating-point computer number format that occupies 
16 bits (two bytes in modern computers) in computer memory.

In IEEE 754-2008 the 16-bit base 2 format is officially referred to as binary16. It is intended 
for storage of many floating-point values where higher precision is not needed, not for 
performing arithmetic computations.

Although implementations of the IEEE Half-precision floating point are relatively new, several 
earlier 16-bit floating point formats have existed including that of Hitachi's HD61810 DSP[1] 
of 1982, Scott's WIF[2] and the 3dfx Voodoo Graphics processor.[3]

Nvidia and Microsoft defined the 'half datatype in the Cg language, released in early 2002, 
and implemented it in silicon in the GeForce FX, released in late 2002.[4] ILM was searching 
for an image format that could handle a wide dynamic range, but without the hard drive and 
memory cost of floating-point representations that are commonly used for floating-point 
computation (single and double precision).[5] The hardware-accelerated programmable shading 
group led by John Airey at SGI (Silicon Graphics) invented the s10e5 data type in 1997 as 
part of the 'bali' design effort. This is described in a SIGGRAPH 2000 paper[6] 
(see section 4.3) and further documented in US patent 7518615.[7]

This format is used in several computer graphics environments including OpenEXR, JPEG XR, 
OpenGL, Cg, and D3DX. The advantage over 8-bit or 16-bit binary integers is that the increased 
dynamic range allows for more detail to be preserved in highlights and shadows for images. 
The advantage over 32-bit single-precision binary formats is that it requires half the 
storage and bandwidth (at the expense of precision and range).[5]

The F16C extension allows x86 processors to convert half-precision floats to and from 
single-precision floats.


Details: Half-precision floating-point format


April 3, 2017
JHZ