Gleitkommaformat mit Oktupelgenauigkeit - Octuple-precision floating-point format

Beim Rechnen ist die Oktupelgenauigkeit ein binäres Gleitkomma- basiertes Computernummernformat , das 32 Bytes (256 Bit ) im Computerspeicher belegt. Diese 256- Bit- Oktupelgenauigkeit ist für Anwendungen vorgesehen, bei denen Ergebnisse erforderlich sind, die eine höhere als die Vierfachgenauigkeit aufweisen . Dieses Format wird selten (wenn überhaupt) verwendet und nur sehr wenige Umgebungen unterstützen es.

Binäres Gleitkommaformat mit Oktupelgenauigkeit nach IEEE 754: binary256

In seiner Revision von 2008 spezifiziert der IEEE 754- Standard ein Binär256- Format unter den Austauschformaten (es ist kein Grundformat) mit:

Das Format wird mit einem impliziten Lead-Bit mit dem Wert 1 geschrieben, es sei denn, der Exponent besteht ausschließlich aus Nullen. Somit erscheinen nur 236 Bits des Signifikanten im Speicherformat, aber die Gesamtgenauigkeit beträgt 237 Bits (ungefähr 71 Dezimalstellen: log 10 (2 237 ) ≈ 71,344 ). Die Bits sind wie folgt angeordnet:

Layout des Gleitkommaformats mit Oktupelgenauigkeit

Exponentencodierung

Der binäre Gleitkomma-Exponent mit Oktupelgenauigkeit wird unter Verwendung einer versetzten binären Darstellung codiert , wobei der Nullpunktversatz 262143 beträgt; im IEEE 754-Standard auch als Exponentenvorspannung bekannt.

Um den wahren Exponenten zu erhalten, muss daher, wie durch die versetzte Binärdarstellung definiert, der Versatz von 262143 vom gespeicherten Exponenten subtrahiert werden.

Die gespeicherten Exponenten 00000 16 und 7FFFF 16 werden speziell interpretiert.

Exponent Signifikant und Null Signifikant und ungleich Null Gleichung
00000 16 0 , –0 subnormale Zahlen (-1) Vorzeichen × 2 –262142 × 0. Signifikante Bits 2
00001 16 , ..., 7FFFE 16 normalisierter Wert (-1) Vorzeichen × 2 Exponentenbits 2 × 1. Signifikante Bits 2
7FFFF 16 ± NaN (leise, signalisierend)

Der minimale streng positive (subnormale) Wert beträgt 2 - 262378 ≈ 10 - 78984 und hat eine Genauigkeit von nur einem Bit. Der minimale positive Normalwert beträgt 2 - 262142 ≈ 2,4824 × 10 - 78913 . Der maximal darstellbare Wert beträgt 2 262144 - 2 261907 ≈ 1,6113 × 10 78913 .

Beispiele für Oktupelpräzision

Diese Beispiele sind in Bit gegebene Darstellung , in hexadezimal , der Gleitkommawert. Dies schließt das Vorzeichen, den (voreingenommenen) Exponenten und den Signifikanten ein.

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)

Standardmäßig rundet 1/3 aufgrund der ungeraden Anzahl von Bits im Signifikanten wie doppelte Genauigkeit ab . Die Bits jenseits des Rundungspunkts sind 0101... also weniger als die Hälfte einer Einheit an letzter Stelle .

Implementierungen

Oktupelpräzision wird selten implementiert, da ihre Verwendung äußerst selten ist. Apple Inc. hatte eine Implementierung der Addition, Subtraktion und Multiplikation von Zahlen mit Oktupelgenauigkeit mit einem 224-Bit -Zweierkomplement- Signifikanten und einem 32-Bit-Exponenten. Man kann allgemeine arithmetische Bibliotheken mit beliebiger Genauigkeit verwenden , um eine Oktupelgenauigkeit (oder eine höhere Genauigkeit) zu erhalten, aber spezielle Implementierungen mit Oktupelgenauigkeit können eine höhere Leistung erzielen.

Hardware-Unterstützung

Es ist keine Hardware-Implementierung mit Oktupelgenauigkeit bekannt.

Siehe auch

Verweise

Weiterführende Literatur