Hans-Peter Diettrich
2020-06-30 17:11:31 UTC
[Nachdem ich darauf aufmerksam gemacht wurde, daß Thunderbird Tabs schon
beim Abschicken verhunzt, hier nochmal mit fest formatierten Tabellen.]
Es gibt verschiedene Ansätze um Zahlenwerte mit einer beschränkten
Anzahl von Stellen (digits, bits) darzustellen. Aufgrund dieser
Beschränkung ist jedes definierte Modell ein Kompromiß zwischen
Präzision (signifikante Stellen) und Skalierungsfaktor (b^Exponent).
Von IEEE 754 wird zu jeder Variablengröße (Bitzahl) eine feste Anzahl
von Exponentenbits vorgeschlagen. Der Standard ist offen für abweichende
Implementierungen, die jedoch alle auf festen Werten für die Zahlenbasis
b (2 oder 10), Präzision (signifikante Stellen) p und maximalen
Exponenten emax basieren sollen. Die Präzision wird einschließlich des
hidden bit ausschließlich Vorzeichenbit angegeben. Der Bereich kleinster
Zahlen (um 0) wird durch denormalisierte Zahlen (hidden bit = 0) bis
exakt 0 erweitert.
Ein Ansatz mit einem dynamischen Bereich für den Exponenten hat John L.
Gustafson mit seinen Unum-Formaten entwickelt. Die Dynamik wird durch
eine Abnahme der Anzahl der signifikanten Stellen bei hohen Exponenten
erkauft. Dem steht ein minimaler Vorteil von mehr signifikanten Stellen
bei Werten um 1.0 gegenüber. Die hohen Exponenten bis emax werden nicht
nur durch einen Verlust sämtlicher signifikanten Stellen erkauft,
zuletzt (bei emax) fallen sogar alle Exponentenbits weg. Diesen Effekt
habe ich weiter unten mit einer negativen Präzision gekennzeichnet.
Ein weiterer Vorschlag verwendet eine variable Zahl von
Exponentenstellen, deren Anzahl in einem zusätzlichen Bitfeld r (range)
gespeichert wird. Hier eine Tabelle der damit erreichbaren Dynamik in
Abhängigkeit von der Anzahl der Range Bits (rs):
rs 2 3 4 5
es 0-3 0-7 0-15 0-31
emax 7 127 32K-1 2G-1
Faktor 2^7-1 2^127-1 2^32K-1 2^2G-1
rs+es 2-5 3-10 4-19 5-36
Damit läßt sich z.B. mit rs=4 der IEEE Bereich für 128 Bit Zahlen
(emax=16K) übertreffen, mit 11 signifikanten Bits mehr (um 1.0) bis 3
weniger (um e=16K). Gegenüber IEEE 32 Bit (single) wären es +5 bis -2
signifikante Stellen, immerhin 29 statt nur 24 signifikante Bits um 1.0.
Im Vergleich mit IEEE Formaten gleicher Bitzahl läßt sich damit erreichen:
Bits 16 32 64 128
-------------- IEEE -------------------
es 5 8 11 15
emax 15 127 1023 16K-1
p 11 24 53 113
--------- höhere Präzision ------------
rs+es 2+3 3+5 4+7 4+11
emax 7 31 127 2K-1
p 11-14 24-29 53-60 113-124
--------- gleicher Bereich ------------
rs+es 3+4 3+7 4+10 4+14
emax 15 127 1023 16K-1
p 9-13 22-29 50-60 110-124
--------- größerer Bereich ------------
rs+es 3+7 3+7 4+15 4+15
emax 127 127 32K-1 32K-1
p 6-13 22-29 45-60 109-124
-------------- Posit ------------------
es 1 2 3 4
emax 25 111 471 1951
p 1-13 1-28 1-59 1-122
emax 28 120 496 2016
p -1..13 -2..28 -3..59 -4..122
Lohnt sich so eine Verbesserung?
Sonstige Kommentare?
beim Abschicken verhunzt, hier nochmal mit fest formatierten Tabellen.]
Es gibt verschiedene Ansätze um Zahlenwerte mit einer beschränkten
Anzahl von Stellen (digits, bits) darzustellen. Aufgrund dieser
Beschränkung ist jedes definierte Modell ein Kompromiß zwischen
Präzision (signifikante Stellen) und Skalierungsfaktor (b^Exponent).
Von IEEE 754 wird zu jeder Variablengröße (Bitzahl) eine feste Anzahl
von Exponentenbits vorgeschlagen. Der Standard ist offen für abweichende
Implementierungen, die jedoch alle auf festen Werten für die Zahlenbasis
b (2 oder 10), Präzision (signifikante Stellen) p und maximalen
Exponenten emax basieren sollen. Die Präzision wird einschließlich des
hidden bit ausschließlich Vorzeichenbit angegeben. Der Bereich kleinster
Zahlen (um 0) wird durch denormalisierte Zahlen (hidden bit = 0) bis
exakt 0 erweitert.
Ein Ansatz mit einem dynamischen Bereich für den Exponenten hat John L.
Gustafson mit seinen Unum-Formaten entwickelt. Die Dynamik wird durch
eine Abnahme der Anzahl der signifikanten Stellen bei hohen Exponenten
erkauft. Dem steht ein minimaler Vorteil von mehr signifikanten Stellen
bei Werten um 1.0 gegenüber. Die hohen Exponenten bis emax werden nicht
nur durch einen Verlust sämtlicher signifikanten Stellen erkauft,
zuletzt (bei emax) fallen sogar alle Exponentenbits weg. Diesen Effekt
habe ich weiter unten mit einer negativen Präzision gekennzeichnet.
Ein weiterer Vorschlag verwendet eine variable Zahl von
Exponentenstellen, deren Anzahl in einem zusätzlichen Bitfeld r (range)
gespeichert wird. Hier eine Tabelle der damit erreichbaren Dynamik in
Abhängigkeit von der Anzahl der Range Bits (rs):
rs 2 3 4 5
es 0-3 0-7 0-15 0-31
emax 7 127 32K-1 2G-1
Faktor 2^7-1 2^127-1 2^32K-1 2^2G-1
rs+es 2-5 3-10 4-19 5-36
Damit läßt sich z.B. mit rs=4 der IEEE Bereich für 128 Bit Zahlen
(emax=16K) übertreffen, mit 11 signifikanten Bits mehr (um 1.0) bis 3
weniger (um e=16K). Gegenüber IEEE 32 Bit (single) wären es +5 bis -2
signifikante Stellen, immerhin 29 statt nur 24 signifikante Bits um 1.0.
Im Vergleich mit IEEE Formaten gleicher Bitzahl läßt sich damit erreichen:
Bits 16 32 64 128
-------------- IEEE -------------------
es 5 8 11 15
emax 15 127 1023 16K-1
p 11 24 53 113
--------- höhere Präzision ------------
rs+es 2+3 3+5 4+7 4+11
emax 7 31 127 2K-1
p 11-14 24-29 53-60 113-124
--------- gleicher Bereich ------------
rs+es 3+4 3+7 4+10 4+14
emax 15 127 1023 16K-1
p 9-13 22-29 50-60 110-124
--------- größerer Bereich ------------
rs+es 3+7 3+7 4+15 4+15
emax 127 127 32K-1 32K-1
p 6-13 22-29 45-60 109-124
-------------- Posit ------------------
es 1 2 3 4
emax 25 111 471 1951
p 1-13 1-28 1-59 1-122
emax 28 120 496 2016
p -1..13 -2..28 -3..59 -4..122
Lohnt sich so eine Verbesserung?
Sonstige Kommentare?