Denormal number

related topics
{math, number, function}
{system, computer, user}
{village, small, smallsup}

In computer science, denormal numbers or denormalized numbers (now often called subnormal numbers) fill the underflow gap around zero in floating point arithmetic: any non-zero number which is smaller than the smallest normal number is 'sub-normal'.

For example, if the smallest positive 'normal' number is 1×βn (where β is the base of the floating-point system, usually 2 or 10), then any smaller positive numbers that can be represented are denormal.

The significand (or mantissa) of an IEEE number is the part of a floating point number that represents the significant digits. For a positive normalised number it can be represented as (where m represents a significant digit and p is the precision, and m0 is non-zero). Notice that for a binary radix, the leading binary digit is one. In a denormal number, since the exponent is the smallest that it can be, zero is the lead significand digit ( in order to represent numbers closer to zero than the smallest normal number.

By filling the underflow gap like this, significant digits are lost, but not to the extent as when doing flush to zero on underflow (losing all significant digits all through the underflow gap). Hence the production of a denormal number is sometimes called gradual underflow because it allows a calculation to lose precision slowly when the result is small.

In IEEE 754-2008, denormal numbers are renamed subnormal numbers, and are supported in both binary and decimal formats. In binary interchange formats, subnormal numbers are encoded with a biased exponent of 0, but are interpreted with the value of the smallest allowed exponent, which is one greater (i.e., as if it were encoded as a 1). In decimal interchange formats they require no special encoding because the format supports unnormalized numbers directly.

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



Denormal numbers provide the guarantee that addition and subtraction of floating-point numbers never underflows; two nearby floating-point numbers always have a representable non-zero difference. Without gradual underflow, the subtraction ab can underflow and produce zero even though the values are not equal. This can, in turn, lead to division by zero errors that cannot occur when gradual underflow is used.

Full article ▸

related documents
Uniform Resource Locator
Lint (software)
IBM Business System 12
Mary (programming language)
Lazy initialization
Digital Signature Algorithm
Chart parser
Endomorphism ring
Ring homomorphism
Identity function
Disjoint sets
Context-sensitive language
Sieve of Eratosthenes
Galois group
Markov process
Equivalence class
Center (group theory)
Measurable function
Euclidean distance
Painter's algorithm
Church–Rosser theorem
Timeline of programming languages
Recursive language
Harmonic analysis