- Half precision
In
computing , half precision is acomputer numbering format that occupies only half of one storage location (word) in computer memory at some address. A half-precision number may be defined to be a binary or decimalinteger ,fixed point , orfloating point . For binary integers, they are sometimes called 'short'."Half-precision floating point" is a relatively new binary floating-point format that uses 2
byte s and which is not covered by the IEEE 754 standard for encodingfloating point numbers (but is included in theIEEE 754r proposed revision).This format is used in several
computer graphics environments includingOpenEXR ,OpenGL , andD3DX . The advantage over 8-bit or 16-bit binary integers is that the increaseddynamic range allows for more detail to be preserved in highlights andshadow s. The advantage over 32-bitsingle precision binary formats is that it requires half the storage and bandwidth. [http://www.openexr.org/details.html]Half precision memory format
Sign bit : 1Exponent width: 5Significand precision: 10 (11 implicit)The format is assumed to have an
implicit integer bit with value 1 unless the exponent field is all zeros. Only 10 bits of the fraction appear in the memory format. In IEEE 754 parlance, there are 10 bits of significand, but there are 11 bits of significand precision (approximately 3 decimal digits, ).syyy yyxx xxxx xxxx (10 xs)
Exponent encodings
Emin (0x01) = −14 Emax (0x1e) = 15
Exponent bias (0x0f) = 15The true exponent = written exponent − exponent bias0x00 and 0x1f are reserved exponents 0x00 is used to represent zero and
denormal s 0x1f is used to representinfinity andNaN sAll bit patterns are valid encodings.
The minimum and maximum representable values are 2-24 = 5.96E-8 (denormalized) and 65504 respectively. The minimum non-denormalized value is 2-14 = 6.10E-5.
Half-precision examples in
hexadecimal 3c00 = 1
c000 = -2
7bff = 65504 (Max Half precision) 3555 ~ 0.33325... ~ 1/3 (1/3 rounds down like
double precision , because of the odd number of bits in the significand.)0400 = 2-14 ~ 6.10352E-5 (Minimum normalized)
0001 = 2-24 ~ 5.96046E-8 (Minimum denormalized)
0000 = 0 8000 = -0
7c00 = Infinity fc00 = -Infinity
See also
*
half precision –single precision –double precision –quadruple precision
*Floating point
*RGBE image format External links
* [http://www.mrob.com/pub/math/floatformats.html#minifloat Minifloats] (in "Survey of Floating-Point Formats")
* [http://www.openexr.org/ OpenEXR site]
* [http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/directx9_c/directx/graphics/reference/d3dx/constants/OTHER_D3DX.asp Half precision constants] fromD3DX (defunct page)
* [http://oss.sgi.com/projects/ogl-sample/registry/ARB/half_float_pixel.txt OpenGL treatment of half precision]
* [http://www.analog.com/Analog_Root/static/library/dspManuals/pdf/ADSP-21065L/65L_tr_numeric_ref.pdf Analog devices variant] (four-bit exponent) (defunct page)
Wikimedia Foundation. 2010.