Ich lese gerade "Das Ende des Fehlers - Unum Computing" von John Gustafson ( Youtube ). Was ich immer noch nicht sicher bin, ist, wie die Fälle, die in IEEE durch negativ vorzeichenbehaftete Null behandelt werden, mit Unums behandelt werden.
Unums erlaubt es also zunächst, bestimmte exakte Werte darzustellen (ähnlich wie Gleitkommawerte) und zusätzlich die offenen Intervalle darzustellen, die zwischen exakten Werten liegen (einschließlich exakter -∞ und ∞). Die gesamte reelle Zahlenlinie wird also durch abwechselnde genaue Werte und offene Intervalle dargestellt:
-∞, (-∞, -maxreal), -maxreal, ... -smallsubnormal, (-smallsubnormal, 0),
0,
(0, smallsubnormal), smallsubnormal, ... maxreal, (maxreal, ∞), ∞
Auf diese Weise sind die (in der IEEE-Tradition) außergewöhnlichen Werte wie Unterlauf und Überlauf nur einige offene Intervalle. Mit anderen Worten: Diese ehemals besonderen Bedingungen werden nun zu regulären Fällen.
IEEEs -∞ entspricht der Vereinigung von {-∞} und (-∞, -maxreal).
Und die vorzeichenbehaftete Null kann jetzt die Intervalle (-smallsubnormal, 0) und (0, smallsubnormal) sein.
1 / (- smallsubnormal, 0) ist jetzt (-∞, -maxreal) und nicht -∞ allein. Während 1/0 ∞ ist.
Was ich immer noch zögere, ist, dass in IEEE -0 und +0 gleich verglichen werden. Aber sie sind nicht in Unums. Es scheint, dass das Mapping nicht 100% ist. Ich frage mich also, ob es Eckfälle gibt, in denen sich der Unterschied zeigen kann ((und ob diese Fälle wirklich relevant sind).
(Mir ist bewusst, warum negative Null wichtig ist. , Verwendet für negativen Gleitkommawert )
quelle
guess
) darauf hindeutet, dass man Dinge mehr oder weniger (und zu Beginn) wörtlich übersetzen kann. Mir ist völlig bewusst, dass eine wörtliche Übersetzung unums nicht voll ausnutzt.Antworten:
Zu lang für einen Kommentar, also schreibe dies als Antwort ...
Das Problem mit IEEE ist, dass wir drei Fälle unterscheiden müssen, aber nur zwei Darstellungen für diese:
(-smallsubnormal,0)
0
(0, +smallsubnormal)
.Das Problem ist jetzt nicht die negative Null, sondern dass wir nicht unterscheiden können, ob ein IEEE 0.0 der zweite oder dritte Fall ist! Mit anderen Worten: Die Zuordnungsfunktion von UNUM zu IEEE ist nicht bijektiv - und wird es auch nie sein, wie bei jedem anderen IEEE-Wert, wir wissen nie, ob es der genaue oder der Intervallwert ist!
Ich denke, es ist absolut in Ordnung, -0.0 zuzuordnen
(-smallsubnormal,0)
, und wir müssen uns entscheiden, ob IEEE 0.0 eher zugeordnet0
oder möglicherweise besser zugeordnet werden soll(0, +smallsubnormal)
. Ich persönlich tendiere zum ersten, aber das ist nicht sehr maßgeblich ...Zum Vergleich mit IEEE (-0,0 ist gleich 0,0): Man sollte (fast) niemals auf exakte Gleichheit vergleichen (C- oder C ++: == -Operator), sondern nur, wenn der absolute Wert der Differenz kleiner als ein geeigneter Schwellenwert ist. Dieses Problem wird auch mit UNUMS nur teilweise beseitigt, da wir jetzt die exakte Gleichheit vergleichen können , wenn das U-Bit nicht gesetzt ist, aber wenn es gesetzt ist, wissen wir immer noch nicht wirklich ...
quelle