Gleitkommazahlen Binäre Gleitkommazahlen

Transcrição

Gleitkommazahlen Binäre Gleitkommazahlen
Gleitkommazahlen
• in vielen technischen und wissenschaftlichen Anwendungen
erforderlich:
– hohe Präzision
– große Dynamik
möglich durch Verwendung von Gleitkommazahlen
• allgemeine Gleitkommazahl zur Basis r („radix“) definiert
durch x = a × re mit
− Argument oder Mantisse a
− Exponent oder Charakteristik e
• eine Gleitkommazahl x ≠ 0 zur Basis r heißt normalisiert, wenn
für die Mantisse a gilt: 1/r ≤ a < 1
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
2
Binäre Gleitkommazahlen
• Verwendung der Basis 2, d.h. eine binäre Gleitkommazahl x
ist definiert durch x = a × 2e
mit m-stelliger Mantisse a
und p-stelligem Exponent e
• eine binäre Gleitkommazahl x ≠ 0 heißt normalisiert, wenn das
höchstwertige Nachkommabit den Wert 1 hat
⇒ zwei Interpretationen: 0.XXXXXXX oder 1.XXXXXXX
• häufig Darstellung des Exponenten mit Bias b: x = a × 2e−b
Wahl von b = 2p–1 – 1 bewirkt Transformation des Bereiches für
den Exponenten e von 0 ... 2p – 1 in –(2p–1 –1) ... 2p–1
⇒ einfache Kodierung positiver und negativer Exponenten
• früher unterschiedliches Gleitkommaformat in jedem Prozessor,
heute überwiegend Verwendung des IEEE 754 Standard
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
3
1
IEEE 754 Standard
• allgemeine Definition: x = (–1)s × 1.f × 2e–b
• Mantisse aus Vorzeichen s und normalisiertem Betrag a = 1.f
im Bereich 1.00..00 bis 1.11..11
(1 vor dem Komma wird nicht kodiert ⇒ erhöhte Präzision)
• Aufbau einer n-Bit
IEEE Gleitkommazahl:
• p-stelliger Exponent mit Bias b = 2p–1–1, gültiger Exponent e
nur im Bereich emin= 0 < e < emax = 2p–1 = 2b+1
⇒ darstellbarer Zahlenbereich: ± 21–b ... (2–2–m) × 2b
• zwischen 2e–b und 2e−b+1 können stets 2m Gleitkommazahlen
kodiert werden ⇒ Abstand 2–m × 2e–b ist abhängig von e !
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
4
IEEE 754 Standard (Forts.)
• 3 verschiedene Formate spezifiziert:
single precision
double precision
quad precision
n
32
64
128
m
23
52
112
s
1
1
1
p
8
11
15
emin
0
0
0
emax
255
2047
32767
b
| xmin |
127
2–126
≈
10–38
1023
2–1022
≈
10–308
16383
2–16382
≈ 10–4932
| xmax | (2–2–23)×2127 ≈ 1038 (2–2–52)×21023 ≈ 10308 (2–2–112)×216383 ≈ 104932
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
5
2
IEEE 754 Standard (Forts.)
• e = emin = (00..00)2 = 0 und e = emax = (11..11)2 werden zur
Kodierung besonderer Zahlen verwendet:
x = +0 („positive Zero“): e = 0, f = 0, s = 0
x = −0 („negative Zero“): e = 0, f = 0, s = 1
x = +∞ („positive Infinity“): e = emax , f = 0, s = 0
x = −∞ („negative Infinity“): e = emax , f = 0, s = 1
x = NaN („Not a Number“): e = emax , f ≠ 0, s kann der
Klassifikation eines NaN dienen, z.B. „quiet“ oder „trapping“
x = (–1)s × 0.f × 21−b („Denormalized Number“): e = 0, f ≠ 0
• Denormalisierte Gleitkommazahlen ermöglichen die Darstellung
sehr kleiner Werte im Bereich 21−b−m ... 21−b
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
6
IEEE 754 Standard (Forts.)
Behandlung von Ausnahmesituationen:
• Überlauf tritt ein, wenn nach Normalisierung für x gilt: e ≥ emax
⇒ Generierung von +∞ (falls x > 0) bzw. −∞ (falls x < 0)
• einige Rechenregeln:
∞ + x = ∞ (falls x ≠ −∞), ∞ − x = ∞ (falls x ≠ ∞),
± x / 0 = ±∞ (falls x ≠ 0), ∞ ⋅ x = ±∞ (falls x ≠ 0)
• einige Operationen liefern ein unbestimmtes Ergebnis, z.B.:
∞ ⋅ 0 = NaN, 0 / 0 = NaN, ∞ − ∞ = NaN, f(NaN) = NaN
• Unterlauf tritt ein, wenn nach Normalisierung für x gilt: e = 0
⇒ entweder Generierung von x = 0 („flushing to zero“)
oder Generierung einer denormalisierten Darstellung von x
• Anmerkung: In vielen Laufzeitsystemen wird bei Darstellung einer Zahl
nicht zwischen NaN, +∞ und −∞ unterschieden und stets NaN generiert!
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
7
3
Fehleranalyse von Gleitkommazahlen
• Eine reelle Zahl x soll durch eine Gleitkommazahl x´ angenähert
werden
• i.a. existieren zwei Gleitkommazahlen x1´ und x2´ mit
x1´≤ x ≤ x2´, d.h. a × 2e ≤ x ≤ (a + 2−m) × 2e
• sei nun x´ die nähere von beiden Gleitkommazahlen x1´ und x2´,
so ergibt sich der maximale absolute Fehler:
εx = x´− x = ½ × (x2´ − x1´) × 2e = ½ × 2−m × 2e = 2−m × 2e−1
(εx hängt somit von Breite m der Mantisse und vom Exponenten ab !)
• für den maximalen relativen Fehler gilt jedoch:
δx = (x´− x) / x = εx / x = (½ × 2−m × 2e) / x
< (½ × 2−m × 2e) / (a × 2e) = ½ × 2−m / a < ½ × 2−m
(δx hängt somit nur von Breite m der Mantisse ab !)
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
8
Rundung von Gleitkommazahlen
IEEE Standard unterstützt vier Rundungsmodi, die vom Anwender
gewählt werden können
(Annahme: x = a × 2e−bias; aus m+r Stellen der Mantisse a werden m Stellen)
• „round to nearest even“ (Default): Runde zur nächsten darstellbaren
Gleitkommazahl x´. Sind Distanzen zur nächstgrößeren Zahl x+ und zur
nächstkleineren Zahl x− identisch, wähle die Zahl x´ mit Mantissenbit a0 = 0
⇒ mittlerer relativer Fehler: E[δx] = 0 !!
• „round towards plus infinity“: Runde stets zur nächstgrößeren
darstellbaren Gleitkommazahl x+ (gilt auch bei Überlauf !)
⇒ mittlerer relativer Fehler: E[δx] = ½ (2−m −2−m−r)
• „round towards minus infinity“: Runde stets zur nächstkleineren
darstellbaren Gleitkommazahl x− (gilt auch bei Überlauf !)
⇒ mittlerer relativer Fehler: E[δx] = – ½ (2−m −2−m−r)
• „round towards zero“: Abschneiden ohne Runden (also „Truncating“)
⇒ mittlerer relativer Fehler: E[δx] = 0 !?
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
9
4
Gleitkomma-Multiplikation
Algorithmus zur Multiplikation zweier IEEE-Gleitkommazahlen
x = (–1)s × a × 2α−bias und y = (–1)t × b × 2β–bias :
1) Multipliziere Mantissen als Festkommazahlen: c = a × b
a = 1.fa und b = 1.fb haben m + 1 Stellen ⇒ c hat 2m + 2 Stellen !
2) Addiere Exponenten: γ = α + β – bias
3) Berechne Vorzeichen des Produktes: u = s ⊕ t
γ-bias
4) Normalisiere Ergebnis z = (–1) × c × 2
a) Falls c ≥ 2, schiebe c um 1 nach rechts und inkrementiere γ
b) Setze c = 1.fc = 1.(c2m–1 c2m–2 ... cm)2 mit Rundung
5) Behandlung von Ausnahmesituationen:
a) Überlauf, falls γ ≥ emax = 2p – 1 ⇒ z := ±∞ (abhängig von u)
b) Unterlauf, falls γ ≤ emin = 0 ⇒ Denormalisierung durchführen !
c) Zero, falls c = 0 ⇒ z := ±0 (abhängig von u)
u
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
10
Gleitkomma-Multipliaktion (Forts.)
• Architektur eines Gleitkomma-Multiplizierers:
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
11
5
Gleitkomma-Addition/Subtraktion
Algorithmus zur Addition/Subtraktion zweier Gleitkommazahlen
x = (–1)s × a × 2α−bias und y = (–1)t × b × 2β−bias im IEEE Format:
1) Sortiere x und y derart, daß x die Zahl mit kleinerem Exponenten ist
2) Anpassung der Exponenten: Transformiere x in die Gleitkommazahl
x´ = (– 1)s × a´× 2β−bias durch Rechtsschieben von a um d = β − α Bits
3) Addiere/Subtrahiere Mantissen:
a) Falls nötig, bilde Zweierkomplement von a´ oder b
b) Führe Festkomma-Addition c = a´ ± b aus
c) Falls c < 0, setze u = 1 und bilde Zweierkomplement von c
4) Normalisiere Ergebnis z = (– 1) × c × 2β–bias
a) Falls c ≥ 2, schiebe c nach rechts (mit Rundung !) und inkrementiere β
b) Falls c < 1, schiebe c nach links und dekrementiere β
ggf. wiederhole b), bis 1 ≤ c < 2
5) Behandlung von Ausnahmesituationen: a = 0, b = 0 oder c = 0,
Überlauf, Unterlauf, d > m + 2
u
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
12
Gleitkomma-Addition (Forts.)
• Architektur eines Gleitkomma-Addierers:
Computer-Arithmetik, WS 2002/2003
A. Strey, Universität Ulm
Kapitel 3 : Gleitkomma-Arithmetik
13
6

Documentos relacionados