Extended precision
From Wikipedia, the free encyclopedia
Extended precision refers to storage formats for floating point numbers which are larger and therefore more precise than the next best precision (usually double precision). Exactly what constitutes "larger" depends on the context, but the most common extended-precision format is currently the 80-bit format first used in the Intel 8087 math coprocessor (and later in the Motorola 68881), which has since become ubiquitous on the x86 architecture. This 80-bit format was standardized by the IEEE floating-point standard.
The IEEE 80-bit floating-point format uses 64 bits for the significand, 15 bits for the exponent field and one bit for the sign of the significand. The exponent field has an offset of 16383 (that is exponent value = exponent field - 16383), and the exponent field value of 32767 (all fifteen bits 1) is reserved so as to enable the representation of special states such as Infinity and Not a Number. For historical reasons, this format has no implicit/hidden bit: the explicit bit was used in the Intel 8087 to suppress the normalization of subnormal numbers in certain cases.
80-bit floating point hardware was introduced well after the development of C and is not supported in as many platforms as smaller formats. As a result, despite being supported in many cases, 32 and 64-bit floating point are more commonly used. (On the x86 architecture, most C compilers support 80-bit extended precision via the long double type.)
Older machines used a variety of formats. On an IBM 1130, extended precision referred to a floating-point format that offered a 32-bit significand (corresponding to the 32-bit two's complement integer arithmetic of the cpu) for a floating-point number, an extension on the normal 24-bit significand of its standard 32-bit floating-point format. Floating-point arithmetic operations were effected by software, and double precision was not supported at all. The extended format occupied three 16-bit words, with the extra space simply ignored.