Noch eine Bemerkung
Betrachte die folgenden binären Floats mit 8‐Bit Mantisse:
x = −1,100 000 * 2100, y = 1,100 000 * 2100 , z = 1,000 0000 Was ist x + (y + z)?
Was ist (x + y) + z?
Somit ist x + (y + z) ≠ (x + y) + z, d.h. die Gleitkommaaddition ist nicht assoziativ!
Quiz: Was ist die Konsequenz, wenn man x1 + x2 + ... + xn parallel berechnen möchte?
Gleitkommaarithmetik
Multiplikation von binären n‐Bit Gleitkommazahlen
Vorüberlegung
Multiplikation von zwei beliebigen binären Floats in normalisierter Darstellung. Was ist der Exponent des Ergebnisses?
Multiplikation der Mantissen. Wo kommt das Komma hin?
Was ist das Vorzeichen v von x * y?
Algorithmus
Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
Start
(1) Addiere die Exponenten.
(Subtrahiere Bias im Falle von Biased‐Notation ) 1,101 * 2‐1 * ‐1,100 * 2‐2
(1)
Algorithmus
Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
(2) Multipliziere die Mantissen.
(1) Der Exponent ist ‐3 Die Mantissen sind:
1,101 und 1,100 (2)
Algorithmus
Beispiel: 4 Bit für die Mantisse
und 8 Bit für den Exponenten. (3) Normalisiere das Produkt Falls notwendig.
Normalisierung erfolgt durch Rechts‐Shift und erhöhen
des Exponenten.
„Exception“
Overflow oder
Underflow? ja nein
Im Beispiel 8‐Bit für den Exponenten.
(2) 10,011100 * 2‐3 (3)
Algorithmus
Beispiel: 4 Bit für die Mantisse und 8 Bit für den Exponenten.
(Eingabe: 1,101 * 2‐1 * ‐1,100 * 2‐2)
Fertig
Immer noch normalisiert?
(4) Runde die Mantisse auf die verfügbare Anzahl Bits.
ja
nein zurück nach (3)
(3) 1,0011100 * 2‐2 (4)
(5)
(5) Setze Vorzeichen auf „+“
wenn die Vorzeichen der Eingaben gleich waren. Sonst
setze Vorzeichen auf „‐“.
Gleitkommaarithmetik
Erhöhen der Genauigkeit
Guard‐Bit, Round‐Bit und Sticky‐Bit
Bei der Darstellung der Addition und Multiplikation haben wir vereinfacht die beim Mantissen‐Alignment rechst heraus
geschobenen Bits einfach abgeschnitten. Zum Beispiel:
In Wirklichkeit (z.B. IEEE 754 Spezifikation) wird zur Steigerung der Genauigkeit etwas geschickter vorgegangen. Obiges Beispiel:
Rechenoperationen finden auf dieser erweiterten Mantisse statt.
Mantisse
10111001000111011010110 Mantisse
Mantissen‐Alignment um 5 Stellen
Wir betrachten 8‐Bit Mantissen. Es seien die folgenden beiden binären Zahlen zu addieren.
1 , 100 0110 * 2
6+ 1 , 011 1010 * 2
2Wie sehen Mantisse, Guard‐Bit, Round‐Bit und Sticky‐Bit nach dem Mantissen‐Alignment aus?
Quiz
8‐Bit‐Mantisse 8‐Bit‐Mantisse
1 , 100 0110 * 2
61 , 011 1010 * 2
2+ / −
IEEE 754 Rounding‐Modes
Synonym Ergebnis Beispiel 21,7 Beispiel ‐21,7 Round
toward +∞
Ceil Kleinster Wert nicht kleiner als M Round
toward
−∞
Floor Größter Wert nicht größer als M
Round toward 0
Truncate Genau M
Round to
nearest
Wert, der am nächsten zu M liegt
Mantisse M G R S
IEEE Rounding‐Modes: Round to Nearest
Eingabe Form bei Tie Rundung Ergebnis M Mantisse|000 Same M = Mantisse
Mantisse|001 Down M = Mantisse
Mantisse|010 Down M = Mantisse
Mantisse|011 Down M = Mantisse
Mantisse|100 (Tie)
...0|100 Down M = Mantisse
...1|100 Up M = Mantisse + 1
Mantisse|101 Up M = Mantisse + 1
Mantisse|110 Up M = Mantisse + 1
Mantisse|111 Up M = Mantisse + 1
Mantisse G R S
Quiz
Was ist das Rundungsergebnis bei Round‐to‐Nearest für folgende Instanzen von „8‐Bit‐Mantisse | Guard‐Round‐Sticky“?
A.) 0000 1101 | 110
B.) 0011 0011 | 100
C.) 0101 0101 | 010
GRS Mantisse Richtung
001 Down
010 Down
011 Down
100 ...0 Down
...1 Up
101 Up
110 Up
111 Up
Übersicht zu Round‐to‐Nearest
Beispiel für die Genauigkeitssteigerung
Wir betrachten 8‐Bit Mantissen. Zu addieren sei:
1,100 0110 * 26 (dezimal = 99,0000) + 1,011 1010 * 22 (dezimal = 5,8125) (Summe dezimal = 104,8125) Das Mantissen‐Alignment und GRS‐Bits kennen wir schon, also:
Rechnung: Mantisse|GRS Mantisse 11000110|000 11000110 + 00001011|101 + 00001011 --- --- 11010001|101 11010001 Rundung: 11010010 ohne 11010001
Ergebnis: 1,1010010 * 26 1,1010001 * 26 Dezimal : 105,0 104,5
Also hat man mit GRS‐Bits und Rundung einen Abstand von 105,0 –
104,8125 = 0,1875. Ohne GRS‐Bits und Rundung ist der Abstand 104,8125 – 104,5 = 0,3125.
Denormalized‐Numbers
Kleinste mit IEEE754 Single‐Precision darstellbare normalized Zahl > 0:
1,000 0000 0000 0000 0000 0000 * 2−126
Der Exponent −127 ist für die 0 reserviert; die Fraction ist dabei 0:
.,000 0000 0000 0000 0000 0000 * 2−127
Warum die Fraction für Exponent −127 nicht sinnvoll nutzen?
Eine Denormalized‐Number der Form
.,000 1010 1110 1000 1111 0011 * 2−127 bedeutet:
0,000 1010 1110 1000 1111 0011 * 2−126
Somit, kleinste mit IEEE754 Single‐Precision darstellbare Zahl > 0:
0,000 0000 0000 0000 0000 0001 * 2−126 = 1,0 * 2−149
Was ist mit denormalized Numbers bei IEEE 754 Double‐Precision die kleinste darstellbare Zahl > 0?
Quiz
Erinnerung:
IEEE 754 Double‐Precision:
Fraction: 52 Bits
Exponent‐Bias: 1023
Webseiten‐Tipp zum Üben
users‐tima.imag.fr/cis/guyot/Cours/Oparithm/english/Flottan.htm
Floating point numbers format
Addition and subtraction
Rounding to the nearest
Zusammenfassung und Literatur
Zusammenfassung
• Rechnerarithmetik endlich und stimmt damit nicht exakt mit Arithmetik über reellen Zahlen überein
– Häufig Approximation realer Zahlen – Assoziativgesetz gilt z.B. nicht
– Hat z.B. Konsequenz auf paralleles Rechnen
• Beschränkter Zahlenbereich
– Overflow, Underflow
• Wichtigste Entwicklung über die Jahre
– Zweierkomplement und IEEE 754
– In jedem modernen Computer so
Quiz
Annahme es gäbe ein 16‐Bit IEEE 754 Floating‐Point‐Format mit 5 Bits für den
Exponenten. Welcher Zahlenbereich wird durch dieses Format abgedeckt?
A: 1.0000 0000 00 * 20 bis 1.1111 1111 11 * 231, 0
B: +/‐ 1.0000 0000 0 * 2‐14 bis +/‐ 1.1111 1111 1 * 215 +/‐ 0, +/‐ , NaN
C: +/‐ 1.0000 0000 00 * 2‐14 bis +/‐ 1.1111 1111 11 * 215, +/‐ 0, +/‐ , NaN
D: +/‐ 1.0000 0000 0 * 2‐15 bis +/‐ 1.1111 1111 1 * 214, +/‐ 0, +/‐ , NaN