Octuple-precision floating-point format
# Octuple-precision floating-point format

In computing, octuple precision is a binary floating-point-based computer number format that occupies 32 bytes (256 bits) in computer memory. This 256-bit octuple precision is for applications requiring results in higher than quadruple precision. This format is rarely (if ever) used and very few environments support it.

## IEEE 754 octuple-precision binary floating-point format: binary256

In its 2008 revision, the IEEE 754 standard specifies a binary256 format among the interchange formats (it is not a basic format), as having:

* Sign bit: 1 bit
* Exponent width: 19 bits
* Significand precision: 237 bits (236 explicitly stored)

The format is written with an implicit lead bit with value 1 unless the exponent is all zeros. Thus only 236 bits of the significand appear in the memory format, but the total precision is 237 bits (approximately 71 decimal digits: $log_{10}(2^{237})$ ≈ 71.344).

The bits are laid out as follows:

### Exponent encoding

The octuple-precision binary floating-point exponent is encoded using an offset binary representation, with the zero offset being 262143; also known as exponent bias in the IEEE 754 standard.

* $E_{min}$ = −262142
* $E_{max}$ = 262143
* Exponent bias = $3FFFF_{16}$ = 262143

Thus, as defined by the offset binary representation, in order to get the true exponent the offset of 262143 has to be subtracted from the stored exponent.

The stored exponents $00000_{16}$ and $7FFFF_{16}$ are interpreted specially.

| Exponent | Significand zero | Significand non-zero | Equation |
| - | - | - | - |
| $00000_{16}$ | 0, −0 | subnormal numbers | $(-1)^{signbit}$ × $2^{−262142}$ × $0.significandbits_2$ |
| $00001_{16},$ ..., $7FFFE_{16}$ | normalized value | normalized value | $(-1)^{signbit}$ × $2^{exponentbits2}$ × $1.significandbits_2$ |
| $7FFFF_{16}$ | ±∞ | NaN (quiet, signalling) |

The minimum strictly positive (subnormal) value is $2^{−262378}$ ≈ $10^{−78984}$ and has a precision of only one bit. The minimum positive normal value is $2^{−262142}$ ≈ 2.4824 × $10^{−78913}.$ The maximum representable value is $2^{262144}$ − $2^{261907}$ ≈ 1.6113 × $10^{78913}.$

### Octuple-precision examples

These examples are given in bit representation, in hexadecimal, of the floating-point value. This includes the sign, (biased) exponent, and significand.

By default, 1/3 rounds down like double precision, because of the odd number of bits in the significand. So the bits beyond the rounding point are 0101... which is less than 1/2 of a unit in the last place.

## Implementations

Octuple precision is rarely implemented since usage of it is extremely rare. Apple Inc. had an implementation of addition, subtraction and multiplication of octuple-precision numbers with a 224-bit two's complement significand and a 32-bit exponent. One can use general arbitrary-precision arithmetic libraries to obtain octuple (or higher) precision, but specialized octuple-precision implementations may achieve higher performance.

### Hardware support

There is no known hardware implementation of octuple precision.

