Grundzüge der Informatik

Werbung
Numerik
Ablauf:
Festpunkt-Darstellung
Gleitpunkt-Darstellung
Runden
Addition/Subtraktion
Multiplikation
Ausblick und Zusammenfassung
Wolfgang Kastner, Institut für Rechnergestützte Automation, TU Wien
Festpunkt-Darstellung
VZ
v
Vorkomma
dn+g-1 dn+g-2
…
…
dn
dn-1
Nachkomma
d1
…
…
d0
• n Nachkommastellen
• g Vorkommastellen
• 1 Vorzeichenbit (1 bei negativer Zahl)
⇒ Zahl x ist N = n + g + 1 Bit breit
N-2
• x = (-1)v ·2-n ·∑ dj ·2j
j=0
= (-1)v dN-2 …dn . dn-1 … d1 d0
1
Festpunkt-Zahlensystem
• N = 12 Bit, n = 3 Bit Nachkommastellen
• (1001 1000 1110)2
⇔
(-49.75)10
VZ
v
1
d10
0
d9
0
d8
1
Vorkomma
d7
d6
1
0
d5
0
d4
0
d3
1
Nachkomma
d2
d1
d0
1
1
0
Festpunkt-Zahlensystem
• N = 12 Bit, n = 3 Bit Nachkommastellen
• (-10.375)10 ⇔ ( 1010.011 )2
VZ
v
1
d10
0
d9
0
d8
0
Vorkomma
d7
d6
0
1
d5
0
d4
1
d3
0
Nachkomma
d2
d1
d0
0
1
1
2
Festpunkt-Zahlensystem
• Größte und kleinste Festpunktzahl
VZ
v
Vorkomma
…
dn+g-1 dn+g-2 …
dn
Nachkomma
…
…
d1
dn-1
d0
• Zahlen haben gleichmäßig konstanten Abstand 2-n
VZ
v
Vorkomma
…
dn+g-1 dn+g-2 …
dn
Nachkomma
…
…
d1
dn-1
d0
Problem:
• große ganze Zahlen: Reduktion der Nachkommastellen n
• kleine Zahlen: Reduktion der Vorkommastellen g
Festpunkt-Zahlensystem
• N = 12 Bit, n = 3 Bit Nachkommastellen
• Größte, kleinste Zahl, Abstand?
VZ
v
d10
d9
d8
Vorkomma
d7
d6
d5
d4
d3
Nachkomma
d2
d1
d0
• Zahlengerade
3
Gleitpunkt-Darstellung
• Darstellung von Zahlen, die betragsmäßig sehr groß UND
sehr klein sein können
• Darstellung der Form:
x = ± Mantisse · Basis Exponent
• Beispiel:
(0.001234)10 =
Gleitpunkt-Darstellung
VZ
d N-1
•
•
•
•
•
d N-2
Exponent
d N-3
…
…
Mantisse
dn
d n-1
…
…
d1
d0
Basis b (vereinbart, nicht gespeichert)
Mantisse (gespeichert auf p Stellen genau)
Exponent e
Vorzeichen v
x = (-1)v ·(Mantisse) ·bExponent
• falls normalisiert:
x = (-1)v ·(m0 + m1b-1 +… + mp-1 -(p-1)) ·be
mit m0 ≠ 0
4
Gleitpunkt-Darstellung
Parameter
• Basis b ≥ 2
• Mantissenlänge p ≥ 2
• kleinster Exponent emin < 0
• größter Exponent emax > 0
• Normalisierungsindikator denorm = {false, true}
• Benachbarte Zahlen im Intervall [be, be+1] haben konstanten
Abstand ∆ x = be-p+1 = 1 ulp · be
IEEE 754 Gleitpunkt Zahlensystem
Single Format (32 Bit)
Double Format (64 Bit)
F(2,24,-126,127,true)
F(2,53,-1022,1023,true)
• Vorzeichenbit (MSB)
• Exponent
– Bitbreite 8 Bit
– Exzess 127
– emin= -126, emax=127
• Mantisse (23+1 Bit)
– implizites erstes Bit
• denorm=true
• Vorzeichenbit (MSB)
• Exponent
– Bitbreite 11 Bit
– Exzess 1023
– emin= -1022, emax=1023
• Mantisse (52+1 Bit)
– implizites erstes Bit
• denorm=true
5
Zahlen, Not a Number, Unendlich
+∞
-∞
F(2,24,-126,127,true)
• (-172.625)10
• Schritt 1: Konvertierung 172.625
(-172.625)10 ⇔ (10101100.101)2
• Schritt 2: Normalisierung
(10101100.101)2 * 20 = (1.0101100101)2 * 27
6
F(2,24,-126,127,true)
• (-172.625)10
• Schritt 3: Exponent bilden
– Exponent = Exzess + Exponent der normalisierten Darstellung
– Exponent = 127 + 7 = 134
• Schritt 4: Vorzeichenbit
– positive Zahlen: MSB = 0
– negative Zahlen: MSB = 1
11000011001011001010000000000000
F(2,24,-126,127,true)
11000100011111111101010000000000
• Für normalisierte Zahlen gilt:
• Für subnormale Zahlen gilt:
• z = (- 1023.3125)10
7
Runden
Gegeben Mantisse
• Abschneiden:
• Aufrunden:
• Abrunden
Runden (cont.)
Gegeben Mantisse
• Nächstgelegener Wert:
8
Runden durch Abschneiden
truncate(x)
F(2, 3, -1, 2, true)
1.11
1.10
1.01
x
1.00
1.001 1.01 1.011
1.10 1.101 1.11
1.111
Gerichtetes Runden
up(x)
F(2, 3, -1, 2, true)
1.11
1.10
1.01
x
1.00
1.001 1.01 1.011
1.10 1.101 1.11
1.111
9
Runden auf nächstgelegenen Wert
rtne(x)
F(2, 3, -1, 2, true)
1.11
1.10
1.01
x
1.00
1.001 1.01 1.011
1.10 1.101 1.11
1.111
Addition/Subtraktion
• Schritt 1:
Exponenten der betragsmäßig kleineren Zahl an den
Exponenten der größeren Zahl angleichen
• Schritt 2:
Die beiden Mantissen addieren
• Schritt 3:
Die Summe normalisieren
• Schritt 4:
Runden
10
Sticky Bit
• Für „round-to-even“ Runden und falls das Ergebnis in gleichem Abstand
zum oberen und unteren nächstliegenden Fließkommawert liegt, benötigt
man eine zusätzliche Stelle („sticky“ Bit).
grs Vorgangsweise
0xx
Mantisse bleibt, wie sie ist
11x
Mantisse++, betragsmäßig, d.h. ohne Berücksichtigung des
Vorzeichens
100
falls LSB der Mantisse=0, Mantisse bleibt
LSB = rechtestes Bit (ohne grs)
falls LSB der Mantisse=1, Mantisse++, betragsmäßig
LSB = rechtestes Bit (ohne grs)
101
beide Summanden haben dasselbe VZ: Mantisse++, betragsmäßig
Summanden haben unterschiedliche VZ: Mantisse bleibt
Beispiel
• Gleitpunkt-Zahlensystem:
– Vorzeichen, 5 Stellen Exponent (Exzess 16), 10 Stellen Mantisse (mit
expliziter Darstellung der führenden ‘1’), Runden durch Abschneiden.
– Zahl A: (5.58)10, Zahl B: (62.27)10, Gesucht A+B
• Init: Gleitpunkt-Darstellung
–
–
–
–
Schritt 1: Umrechung in Binärsystem
Schritt 2: Normalisierung
Schritt 3: Exponentendarstellung
Schritt 4: Vorzeichen
• Addition (mit grs-Behandlung)
–
–
–
–
Schritt 1: Exponenten anpassen
Schritt 2: A+B vor der Normalisierung
Schritt 3: A+B nach der Normalisierung
Schritt 4: A+B nach dem Runden “round to even”
11
Beispiel
Gleitpunkt-Zahlensystem:
Vorzeichen,
5 Stellen Exponent (Exzess 16!),
10 Stellen Mantisse (mit expliziter Darstellung der führenden ‘1’),
Runden durch Abschneiden (truncate)
Zahl A: (5.58)10, Zahl B: (62.27)10, Gesucht A+B
• Init: Gleitpunkt-Darstellung (Schritt 1 – 4)
A 0 1 0 0 1 1 1 0 1 1 0 0 1 0 1 0
B 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 0
Beispiel
• Addition mit grs-Behandlung
– Schritt 1: Exponenten anpassen
A 0 1 0 0 1 1 1 0 1 1 0 0 1 0 1 0
B 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 0
g r s
A 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 0
– Schritt 2: Mantissen addieren (A+B vor der Normalisierung)
A 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 0
B 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 0
A+B 0 1 0 1 1 0
10
0 0 0 1 1 1 1 0 1 0 1 0
12
Beispiel
• Schritt II: Addition mit grs-Behandlung
– Schritt 3: Ergebnis Normalisierung
A+B 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 0 1
– Schritt 4: Rundungsvorschriften beachten (siehe Tabelle!)
g r s
A+B 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0 1 0 1
A+B 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 0
+ 1
ulp
– Ergebnis: A+B nach dem Runden “round to even”
A+B
0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 1
Genauigkeitsbetrachtungen
• Fehlerfortpflanzung und Auslöschung
• Absoluter Rundungsfehler
• Relativer Rundungsfehler
• Für vorheriges Beispiel:
–
–
–
–
Exaktes Ergebnis:
Errechnetes Ergebnis:
Absoluter Rundungsfehler:
Relativer Rundungsfehler:
x = 67.85
x = 67.875
0.025
0.037%
13
Multiplikation
• Schritt 1:
Multiplikation der Mantissen
• Schritt 2:
Addition der Exponenten
• Schritt 3:
Normalisieren und Runden des Ergebnisses
• Schritt 4:
Vorzeichenbit setzen
Ausblick und Zusammenfassung
• D. Goldberg: „What every computer scientist should know
about floating-point arithmetic“, ACM Computing Surveys,
(23)1:5-48, 1991.
• IEEE: „Standard 754-1985 for binary floating-point
arithmetic“, Institute of Electrical and Electronic Engineers,
1985.
• Google IEEE-754 Floating Point Conversion
• Tutorien
14
Herunterladen