Minifloat

Minifloat

In computing, minifloats are floating point values represented with very few bits. Predictably, they are not well suited for general purpose numerical calculations. They are used for special purposes most often in computer graphics where iterations are small and precision has aesthetic effects. Additionally they are frequently encountered as a pedagogical tool in computer science courses to demonstrate the properties and structures of floating point arithmetic and IEEE 754 numbers.

Minifloats with 16 bits are half-precision numbers (opposed to single and double precision). There are also minifloats with 8 bits or even less.

Minifloats can be designed following the principles of the IEEE 754 standard. In this case they must obey the (not explicitly written) rules for the frontier between subnormal and normal numbers and they must have special patterns for infinity and NaN. Normalized numbers are stored with a biased exponent. The new revision of the standard, IEEE 754-2008, has 16-bit binary minifloats.

The Radeon R300 and R420 GPUs used an "fp24" floating-point format with 7 bits of exponent and 16 bits (+1 implicit) of mantissa.[1]

In the G.711 standard for audio companding designed by ITU-T the data encoding with the A-law essentially encodes a 13 bit signed integer as a 1.3.4 minifloat.

In computer graphics minifloats are sometimes used to represent only integral values. If at the same time subnormal values should exist, the least subnormal number has to be 1. This statement can be used to calculate the bias value. The following example demonstrates the calculation as well as the underlying principles.

Floating-point precisions

IEEE 754:
16-bit: Half (binary16)
32-bit: Single (binary32), decimal32
64-bit: Double (binary64), decimal64
128-bit: Quadruple (binary128), decimal128
Other:
Minifloat · Extended precision
Arbitrary precision

Contents

Example

A minifloat in one byte (8 bit) with one sign bit, four exponent bits and three mantissa bits (in short a 1.4.3.−2 minifloat) should be used to represent integral values. All IEEE 754 principles should be valid. The only free value is the bias, which will come out as −2. The unknown exponent is called for the moment x.

Numbers in a different base are marked as ...(base). Example 101(2) = 5. The bit patterns have spaces to visualize their parts.

Representation of zero

0 0000 000 = 0

Subnormal numbers

The mantissa is extended with 0.:

0 0000 001 = 0.0012 × 2x = 0.125 × 2x = 1 (least subnormal number)
...
0 0000 111 = 0.1112 × 2x = 0.875 × 2x = 7 (greatest subnormal number)

Normalized numbers

The mantissa is extended with 1.:

0 0001 000 = 1.0002 × 2x = 1 × 2x = 8 (least normalized number)
0 0001 001 = 1.0012 × 2x = 1.125 × 2x = 9
...
0 0010 000 = 1.0002 × 2x+1 = 1 × 2x+1 = 16
0 0010 001 = 1.0012 × 2x+1 = 1.125 × 2x+1 = 18
...
0 1110 000 = 1.0002 × 2x+13 =  1.000 × 2x+13 =  65536
0 1110 001 = 1.0012 × 2x+13 =  1.125 × 2x+13 =  73728
...
0 1110 110 = 1.1102 × 2x+13 =  1.750 × 2x+13 = 114688
0 1110 111 = 1.1112 × 2x+13 =  1.875 × 2x+13 = 122880 (greatest normalized number)

Infinity

0 1111 000 = +infinity
1 1111 000 = −infinity

If the exponent field were not treated specially, the value would be

0 1111 000 = 1.0002 × 2x+14 =  217 = 131072

Not a Number

x 1111 yyy = NaN (if yyy ≠ 000)

Without the IEEE 754 special handling of the largest exponent, the greatest possible value would be

0 1111 111 = 1.1112 × 2x+14 =  1.875 * 217 = 245760

Value of the bias

If the least subnormal value (second line above) should be 1, the value of x has to be x = 3. Therefore the bias has to be −2, that is every stored exponent has to be decreased by −2 or has to be increased by 2, to get the numerical exponent.

Properties of this example

Graphical representation of integral (1.4.3.−2) minifloats.

Integral minifloats in one byte have a greater range of ±122880 than twos complement integer with a range −128 to +127. The greater range is compensated by a poor precision, because there are only 4 mantissa bits, equivalent to slightly more than one decimal place.

There are only 242 different values (if +0 and −0 are regarded as different), because 14 bit patterns represent NaN.

The values between 0 and 16 have the same bit pattern as minifloat or twos complement integer. The first pattern with a different value is 00010001, which is 18 as a minifloat and 17 as a twos complement integer.

This coincidence does not occur at all with negative values, because this minifloat is a signed-magnitude format.

The (vertical) real line on the right shows clearly the varying density of the floating point values - a property which is common to any floating point system. This varying density results in a curve similar to the exponential function.

Although the curve may appear smooth, this is not the case. The graph actually consists of distinct points, and these points lie on line segments with discrete slopes. The value of the exponent bits determines the absolute precision of the mantissa bits, and it is this precision that determines the slope of each linear segment.

Arithmetic

Addition

Addition of (1.3.2.3)-minifloats.

The graphic demonstrates the addition of even smaller (1.3.2.3)-minifloats with 7 bits. This floating point system follows the rules of IEEE 754 exactly. NaN as operand produces always NaN results. Inf − Inf and (−Inf) + Inf results in NaN too (green area). Inf can be augmented and decremented by finite values without change. Sums with finite operands can give an infinite result (i.e. 14.0+3.0 − +Inf as a result is the cyan area, −Inf is the magenta area). The range of the finite operands is filled with the curves x+y=c, where c is always one of the representable float values (blue and red for positive and negative results respectively).

Subtraction, multiplication and division

The other arithmetic operations can be illustrated similarly:

See also

References

  1. ^ Buck, Ian (2005-03-13), "Chapter 32. Taking the Plunge into GPU Computing", in Pharr, Matt, GPU Gems, ISBN 0-321-33559-7, http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter32.html, retrieved 2011-02-20 

External links


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Look at other dictionaries:

  • Minifloat — Als Minifloats bezeichnet man Zahlen in einem Gleitkommaformat mit nur wenigen Bits. Minifloats sind für numerische Rechnungen nicht geeignet, werden jedoch gelegentlich für Spezialzwecke oder in der Ausbildung eingesetzt. Minifloats mit 16 Bit… …   Deutsch Wikipedia

  • Minifloats — Als Minifloats bezeichnet man Zahlen in einem Gleitkommaformat mit nur wenigen Bits. Minifloats sind für numerische Rechnungen nicht geeignet, werden jedoch gelegentlich für Spezialzwecke oder in der Ausbildung eingesetzt. Minifloats mit 16 Bit… …   Deutsch Wikipedia

  • Floating point — In computing, floating point describes a method of representing real numbers in a way that can support a wide range of values. Numbers are, in general, represented approximately to a fixed number of significant digits and scaled using an exponent …   Wikipedia

  • 13-Segment-Kennlinie — Das A law Verfahren ist ein Digitalisierungsverfahren für analoge Audiosignale, das in der Empfehlung G.711 der ITU T standardisiert ist. Analoge Signale werden in digitale Signale der PCM Technik mit 8 Bit Datenworten umgesetzt und umgekehrt.… …   Deutsch Wikipedia

  • A-law-Verfahren — Das A law Verfahren ist ein Digitalisierungsverfahren für analoge Audiosignale, das in der Empfehlung G.711 der ITU T standardisiert ist. Analoge Signale werden in digitale Signale der PCM Technik mit 8 Bit Datenworten umgesetzt und umgekehrt.… …   Deutsch Wikipedia

  • Alaw — Das A law Verfahren ist ein Digitalisierungsverfahren für analoge Audiosignale, das in der Empfehlung G.711 der ITU T standardisiert ist. Analoge Signale werden in digitale Signale der PCM Technik mit 8 Bit Datenworten umgesetzt und umgekehrt.… …   Deutsch Wikipedia

  • Denormalisierte Zahl — Die Norm IEEE 754 (ANSI/IEEE Std 754 1985; IEC 60559:1989 International version) definiert Standarddarstellungen für binäre Gleitkommazahlen in Computern und legt genaue Verfahren für die Durchführung mathematischer Operationen, insbesondere für… …   Deutsch Wikipedia

  • Fließkommazahl — Eine Gleitkommazahl (auch Gleitpunktzahl oder Fließkommazahl; engl. floating point number) ist eine approximative Darstellung einer reellen Zahl. Die Menge der Gleitkommazahlen ist eine endliche Teilmenge der rationalen Zahlen. Zusammen mit den… …   Deutsch Wikipedia

  • Gleitkomma — Eine Gleitkommazahl (auch Gleitpunktzahl oder Fließkommazahl; engl. floating point number) ist eine approximative Darstellung einer reellen Zahl. Die Menge der Gleitkommazahlen ist eine endliche Teilmenge der rationalen Zahlen. Zusammen mit den… …   Deutsch Wikipedia

  • Gleitkommaarithmetik — Eine Gleitkommazahl (auch Gleitpunktzahl oder Fließkommazahl; engl. floating point number) ist eine approximative Darstellung einer reellen Zahl. Die Menge der Gleitkommazahlen ist eine endliche Teilmenge der rationalen Zahlen. Zusammen mit den… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”