Ich habe ein gutes Verständnis davon, wie Fließkommazahlen funktionieren, aber ich möchte wissen, wie die spezifischen Exponenten- und Mantissengrößen bestimmt wurden. Sind sie in irgendeiner Weise optimal? Wie kann Optimalität für Gleitkommadarstellungen gemessen werden (ich nehme an, es gibt mehrere Möglichkeiten)? Ich kann mir vorstellen, dass diese Probleme im offiziellen Standard angesprochen werden, aber ich habe keinen Zugang dazu.Was ist der Grund für die Größe von Exponenten und Mantissen in IEEE-Gleitkomma-Standards?
Antwort
Für 32-Bit-IEEE-Gleitkommazahlen lautet die Überlegung, dass die Genauigkeit mindestens so gut wie 24 Bit Festkomma sein sollte.
Warum genau 24 Bit, weiß ich nicht, aber es scheint wie ein vernünftiger Kompromiss.
Ich nehme an, dass eine schöne "runde" Zahl (Mantisse + Vorzeichen = 3 Bytes, Exponent = 1 Byte) Implementierungen effizienter machen kann.
Nach this interview with Will Kahan basierten sie auf der VAX F and G formats der Ära.
Natürlich ist das nicht die Frage, beantwortet, wie diese Formate gewählt wurden ...
Während ich noch nie eine publizierte Begründung für die VAX-Fließkommaformate gesehen habe, habe ich mir immer vorgestellt, dass der Exponentenbereich des F-Formats so gewählt wurde, dass alle wichtigen physikalischen Konstanten einschließlich der Plank-Konstante (6.626070040 x 10) dargestellt werden können ** - 34) und die Avogadro-Konstante (6.022140857 x 10 ** 23). Reine Vermutung, natürlich. – njuffa
Eine Internetsuche führte mich zu diesem Grundprinzip für die F- und D-Gleitkommaformate der VAX, wie ursprünglich für die PDP-11 entworfen: [PDP-11/40 Technical Memorandum # 16] (https: //ia601604.us.archive. org/26/items/bitesavers_decpdp11meoatingPointFormat_1047674/701110_The_PDP-11_Floating_Point_Format.pdf). Die Diskussion des Exponentenbereichs des F-Formats erwähnt spezifisch die Plank- und Avogadro-Konstanten. – njuffa
James Demmel berichtet in [NA Digest Sonntag, 16. Februar 1992, Band 92: Ausgabe 7] (http://www.netlib.org/na-digest-html/92/v92n07.html) über Probleme mit dem D-Format des VAX aufgrund des engen Exponentenbereichs in Bezug auf LAPACK, aber es ist aus der Diskussion nicht klar, wie diese Art von Problemen speziell zur Auswahl von 11 Exponenten-Bits im VA-G-Format führte. – njuffa
Splitting Dinge in Bytes hilft enorm bei Implementierungen. Dinge wie 8 + 56 oder 16 + 48 zu teilen hätte man auch bei der Implementierung, aber ein 8-Bit-Exponent wäre ein bisschen klein, und ein 16-Bit-Exponent würde eine Verschwendung von Bits darstellen. – supercat