Format zmiennoprzecinkowy z precyzją ósmej - Octuple-precision floating-point format

W obliczeniowej , ośmiokrotne dokładność jest binarny zmiennoprzecinkową -na komputer format numeru , który zajmuje 32 bajtów (256 bitów ) w pamięci komputera. Ta ośmiokrotnie większa 256- bitowa precyzja jest przeznaczona do zastosowań wymagających większej niż czterokrotna precyzji wyników . Ten format jest rzadko (jeśli w ogóle) używany i bardzo niewiele środowisk go obsługuje.

IEEE 754 binarny format zmiennoprzecinkowy o ośmiokrotnej precyzji: binary256

W wersji z 2008 r. Standard IEEE 754 określa format binary256 wśród formatów wymiany (nie jest to format podstawowy), ponieważ:

Format jest zapisywany z niejawnym bitem wiodącym o wartości 1, chyba że wykładnikiem są same zera. Tak więc tylko 236 bitów mantysy pojawiają się w postaci pamięci, ale całkowita dokładność jest 237 bitów (około 71 cyfry dziesiętne: log 10 (2 237 ) ≈ 71.344 ). Bity są ułożone w następujący sposób:

Układ formatu zmiennoprzecinkowego o ośmiokrotnej precyzji

Kodowanie wykładników

Binarny wykładnik zmiennoprzecinkowy o dokładności ósemkowej jest kodowany przy użyciu reprezentacji binarnej z przesunięciem , przy czym przesunięcie zerowe wynosi 262143; w standardzie IEEE 754 znany również jako odchylenie wykładnicze.

Zatem, zgodnie z definicją reprezentacji binarnej z przesunięciem, aby otrzymać rzeczywisty wykładnik, przesunięcie wynoszące 262143 musi zostać odjęte od zapisanego wykładnika.

Przechowywane wykładniki 00000 16 i 7FFFF 16 są specjalnie interpretowane.

Wykładnik potęgowy Znaczące zero Znaczące i niezerowe Równanie
00000 16 0 , -0 liczby anormalne (-1) bit znaku × 2 −262142 × 0. Znaczące bity 2
00001 16 , ..., 7FFFE 16 wartość znormalizowana (-1) bit znaku × 2 bity wykładnika 2 × 1. znaczące bity 2
7FFFF 16 ± NaN (cichy, sygnalizacja)

Minimalna ściśle dodatnia (subnormalna) wartość wynosi 2 −262378 ≈ 10 −78984 i ma precyzję tylko jednego bitu. Minimalna dodatnia wartość normalna wynosi 2 −262142 ≈ 2,4824 × 10 −78913 . Maksymalna możliwa do przedstawienia wartość to 2 262144 - 2 261907 ≈ 1,6113 × 10 78913 .

Przykłady ośmiokrotnej precyzji

Przykłady te podano w bitowej reprezentacji w kodzie szesnastkowym , z wartością zmiennoprzecinkową. Obejmuje to znak, (tendencyjny) wykładnik i znacznik.

0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016 = +0
8000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016 = −0
7fff f000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016 = +infinity
ffff f000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016 = −infinity
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000116
= 2−262142 × 2−236 = 2−262378
≈ 2.24800708647703657297018614776265182597360918266100276294348974547709294462 × 10−78984
  (smallest positive subnormal number)
0000 0fff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff16
= 2−262142 × (1 − 2−236)
≈ 2.4824279514643497882993282229138717236776877060796468692709532979137875392 × 10−78913
  (largest subnormal number)
0000 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016
= 2−262142
≈ 2.48242795146434978829932822291387172367768770607964686927095329791378756168 × 10−78913
  (smallest positive normal number)
7fff efff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff16
= 2262143 × (2 − 2−236)
≈ 1.61132571748576047361957211845200501064402387454966951747637125049607182699 × 1078913
  (largest normal number)
3fff efff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff16
= 1 − 2−237
≈ 0.999999999999999999999999999999999999999999999999999999999999999999999995472
  (largest number less than one)
3fff f000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000016
= 1 (one)
3fff f000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 000116
= 1 + 2−236
≈ 1.00000000000000000000000000000000000000000000000000000000000000000000000906
  (smallest number larger than one)

Domyślnie 1/3 zaokrągla się w dół, jak podwójna precyzja , z powodu nieparzystej liczby bitów w mantysie. Tak więc bity poza punktem zaokrąglenia są 0101... mniejsze niż 1/2 jednostki na ostatnim miejscu .

Wdrożenia

Rzadko stosuje się ośmiokrotnie precyzję, ponieważ jej użycie jest niezwykle rzadkie. Firma Apple Inc. miała implementację dodawania, odejmowania i mnożenia liczb ośmiokrotnie dokładnych z 224-bitowym znacznikiem dopełnienia do dwóch i 32-bitowym wykładnikiem. Można użyć bibliotek arytmetycznych o ogólnej arbitralnej precyzji, aby uzyskać ośmiokrotną (lub wyższą) precyzję, ale wyspecjalizowane implementacje o ośmiokrotnie dokładności mogą osiągnąć wyższą wydajność.

Wsparcie sprzętowe

Nie jest znana implementacja sprzętu o ośmiokrotnej precyzji.

Zobacz też

Bibliografia

Dalsza lektura