Gleitpunktzahlen1 Die Menge der Gleitpunktzahlen ist gegeben durch F̂pb, t, emin , emax q “ Fpb, t, emin , emax q Y Fd pb, t, emin , emax q, § Fpb, t, emin , emax q . . . normalisierte Gleitpunktzahlen § Fd pb, t, emin , emax q . . . denormalisierte Gleitpunktzahlen. 1 Literatur: R. Plato: Numerische Mathematik kompakt (2010). Kapitel 16 1/8 Normalisierte Gleitpunktzahlen Fpb, t, emin , emax q x “ σ ¨ M ¨ be “ ˘0.d1 d2 . . . dt ˆ be , § σ . . . Vorzeichen, b . . . Basis, emin ď e ď emax , § M . . . Mantisse, M“ t ÿ dk b´k , k“1 § § § Ziffern der Mantisse d1 , . . . , dt P t0, 1, . . . , b ´ 1u, d1 ‰ 0 “Normalisierung”, t . . . Mantissenlänge. Beispiel: x “ 3.0. § b “ 10: x “ 1 ¨ 3 ¨ 10´1 ¨ 101 “ `0.3 ˆ 101 . ` ˘ § b “ 2: x “ 1 ¨ 1 ¨ 2´1 ` 1 ¨ 2´2 ¨ 22 “ `0.11 ˆ 22 . 2/8 Denormalisierte Gleitpunktzahlen Fd pb, t, emin , emax q § Grund für Fd pb, t, emin , emax q: Füllung der Lücke in Fpb, t, emin , emax q zw. xmin und ´xmin ; xmin “ bemin ´1 kleinste positive Zahl in Fpb, t, emin , emax q: . § Darstellung denormalisierter Zahlen xD “ σ ¨ M ¨ bemin mit M“ t ÿ dk b´k , d2 , . . . , dt P t0, 1, b ´ 1u. k“2 Beachte: keine Normierung, d.h. d2 darf Null sein. Kleinste positive denormalisierte Zahl: bemin ´t . 3/8 Beispiel: Doppeltes Grundformat F̂p2, 53, ´1021, 1024q Verwendung: § “double” in C und Java, § Standarddarstellung von Zahlen in Matlab. Speicherung einer Zahl in 64 Bits: 1 Bit: Vorzeichen 52 Bits: Mantisse ( 1 hidden bit) 11 Bits: Exponent bzw. Umschaltung norm./denorm. Zahlen § xmin pFq “ 2´1022 « 2.33 ¨ 10´308 § xmax pFq “ bemax p1 ´ b´t q « 1.8 ¨ 10308 § xmin pFd q “ 2´1021´53 « 5 ¨ 10´324 § eps “ 1.1 ¨ 10´16 . 4/8 Rundung Die Abbildung rd : R Ñ Fpb, t, emin , emax q mit x ÞÑ rdpxq heißt Rundung, falls |rdpxq ´ x| “ min |y ´ x|. yPF Der relative Fehler einer gerundeten Zahl xmin pFq ď |x| ď xmax pFq lässt sich folgendermaßen abschätzen: |rdpxq ´ x| 1 ď b´t`1 “: eps |x| 2 eps ... Maschinengenauigkeit. § Abstand der zu 1.0 nächstgrößeren Zahl: 2eps. § Doppeltes Grundformat: eps “ 0.5 ¨ 2´53`1 « 1.1 ¨ 10´16 . 5/8 Gleitpunktarithmetik Schon elementare Rechenoperationen von GPZ führen zu Resultaten, die nicht in F liegen, d. h. § Maschinenoperationen ‘, a, b, m stimmen im Allgemeinen nicht mit den entsprechenden exakten Operationen `, ´, ¨, { überein. Standard für Genauigkeit von Maschinenoperationen (IEEE 754) Für x, y P F und xmin pFq ď |x ˝ y| ď xmax pFq muss gelten x ˝ y “ rdpx ˛ yq, für alle ˝ P t‘, a, b, mu, wobei ˛ P t`, ´, ¨, {u die dazugehörige exakte Rechenoperation ist. Der obige Standard wird ‘ auch für weitere elementare Rechenoperationen, wie z. B. für sin, cos, , . . . gefordert. 6/8 Fehlerverstärkung bei Grundrechenoperationen Fragestellung: Kann es bei Grundrechenoperationen zu einer erheblichen Fehlerverstärkung kommen, wenn mit Gleitpunktzahlen gerechnet wird? Beispiel: Berechnung von ˆ f pxq “ x3 x 1 ´ x2 ´ 1 x ˙ für x “ 1.2 ¨ 107 . Berechnungen im doppeltem Grundformat. Graue Ziffern sind fehlerhafte Ziffern: x m px b x a 1q “: η1 “ 8.333333333333391 ¨ 10´8 1 m x “: η2 “ 8.333333333333334 ¨ 10´8 x3 “ η3 “: 1.728 ¨ 1021 η4 :“ η1 a η2 “ 5.691 . . . ¨ 10´22 f pxq “ η3 b η4 “ 0.983 . . . Interpretation der Ergebnisse: § Auslöschung ist bei η4 aufgetreten. § Ausweg: Berechnung von f pxq durch 1 1´x´2 liefert f pxq “ 1.000000000000007 (alle Stellen stimmen). 7/8 a) Fehlerverstärkung bei Addition und Subtraktion Seien x, y P R und xmin pFq ď |x ` y| ď xmax pFq. Dann gilt: ˇ ˇ ˇ xδx |rdpxq ` rdpyq ´ px ` yq| yδy ˇˇ |x| ` |y| “ ˇˇ ` ď eps , |x ` y| x`y x`yˇ |x ` y| wobei δx “ rdpxq´x x und δy “ rdpyq´y y sind. § Haben x und y dasselbe Vorzeichen ist die relative Fehlerverstärkung durch eps beschränkt. § Für x « ´y kann es zu einer großen Fehlerverstärkung kommen, weil 1 sehr groß ist. |x`y| b) Fehlerverstärkung bei Multiplikation und Division Seien x, y P R und xmin pFq ď |x ¨ y| ď xmax pFq. Dann gilt: |rdpxq ¨ rdpyq ´ px ¨ yq| ď 3eps. |x ¨ y| § Bei der Multiplikation (und Division) ist der relative Fehler zweier gerundeten Zahlen durch 3eps beschränkt. 8/8