Gleitkommaarithmetik und Fehleranalyse



Ähnliche Dokumente
2 Gleitpunktarithmetik und Fehleranalyse

Binäre Gleitkommazahlen

Computerarithmetik ( )

Gleitkommaarithmetik und Pivotsuche bei Gauß-Elimination. Lehrstuhl für Angewandte Mathematik Wintersemester 2009/

2 Gleitpunktarithmetik und Fehleranalyse

in vielen technischen und wissenschaftlichen Anwendungen erforderlich: hohe Präzision große Dynamik möglich durch Verwendung von Gleitkommazahlen

Binärdarstellung von Fliesskommazahlen

Primzahlen und RSA-Verschlüsselung

Grundlagen der Technischen Informatik Wintersemester 12/13 J. Kaiser, IVS-EOS

, WS2012 Übungsgruppen: Mo.,

Dezimalkomma (decimal point) rechts von Stelle mit Wertigkeit 100 nachfolgende Stellen haben Wertigkeit 10-1, 10-2, etc.

Lineare Gleichungssysteme

Numerisches Programmieren, Übungen

Vertiefungsstoff zum Thema Darstellung von Zahlen

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Binäre Division. Binäre Division (Forts.)

Lösungen: zu 1. a.) b.) c.)

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

7 Rechnen mit Polynomen

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

Grundlagen der höheren Mathematik Einige Hinweise zum Lösen von Gleichungen

Einführung in die Algebra

Technische Informatik - Eine Einführung

Mathematischer Vorbereitungskurs für Ökonomen

Kapitel 1. Zahlendarstellung. Prof. Dr. Dirk W. Hoffmann. Hochschule Karlsruhe w University of Applied Sciences w Fakultät für Informatik

Die Gleichung A x = a hat für A 0 die eindeutig bestimmte Lösung. Für A=0 und a 0 existiert keine Lösung.

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

Zeichen bei Zahlen entschlüsseln

2 Darstellung von Zahlen und Zeichen

Elemente der Analysis I Kapitel 2: Einführung II, Gleichungen

Der Zwei-Quadrate-Satz von Fermat

a) Da die Zahlen im IEEE-32Bit-Format dargestellt werden sollen, ist der Bias = 127.

1 Mathematische Grundlagen

Einführung in die Informatik I

13. Lineare DGL höherer Ordnung. Eine DGL heißt von n-ter Ordnung, wenn Ableitungen y, y, y,... bis zur n-ten Ableitung y (n) darin vorkommen.

Lineare Funktionen. 1 Proportionale Funktionen Definition Eigenschaften Steigungsdreieck 3

6.2 Scan-Konvertierung (Scan Conversion)

Im Jahr t = 0 hat eine Stadt Einwohner. Nach 15 Jahren hat sich die Einwohnerzahl verdoppelt. z(t) = at + b

8. Quadratische Reste. Reziprozitätsgesetz

Die reellen Lösungen der kubischen Gleichung

Mathematik für Studierende der Biologie und des Lehramtes Chemie Wintersemester 2013/14. Auswahl vorausgesetzter Vorkenntnisse

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

2 Rechnen auf einem Computer

Rechnerarithmetik Ganzzahlen und Gleitkommazahlen Ac 2013

Informationsblatt Induktionsbeweis

Mathematik. UND/ODER Verknüpfung. Ungleichungen. Betrag. Intervall. Umgebung

Ein polyadisches Zahlensystem mit der Basis B ist ein Zahlensystem, in dem eine Zahl x nach Potenzen von B zerlegt wird.

Fachschaft Mathematik und Informatik (FIM) LA I VORKURS. Herbstsemester gehalten von Harald Baum

Quadratische Gleichungen

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Mathematik I für Wirtschaftswissenschaftler

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Eine Logikschaltung zur Addition zweier Zahlen

Das Mathematik-Abitur im Saarland

Bruchrechnung Wir teilen gerecht auf

Skript und Aufgabensammlung Terme und Gleichungen Mathefritz Verlag Jörg Christmann Nur zum Privaten Gebrauch! Alle Rechte vorbehalten!

Grundstrukturen: Speicherorganisation und Zahlenmengen

Mathematik: Mag. Schmid Wolfgang Arbeitsblatt 3 1. Semester ARBEITSBLATT 3 RECHNEN MIT GANZEN ZAHLEN

Bevor lineare Gleichungen gelöst werden, ein paar wichtige Begriffe, die im Zusammenhang von linearen Gleichungen oft auftauchen.

TECHNISCHE UNIVERSITÄT MÜNCHEN

Numerische Datentypen. Simon Weidmann

1 topologisches Sortieren

Konzepte der Informatik

Rekursionen. Georg Anegg 25. November Methoden und Techniken an Beispielen erklärt

Repetitionsaufgaben Wurzelgleichungen

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

Musterlösungen zur Linearen Algebra II Blatt 5

R ist freie Software und kann von der Website.

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Fehler in numerischen Rechnungen

Info zum Zusammenhang von Auflösung und Genauigkeit

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

Grundlagen der Theoretischen Informatik, SoSe 2008

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Korrelation (II) Korrelation und Kausalität

DHBW Karlsruhe, Vorlesung Programmieren, Klassen (2)

Algorithmen zur Integer-Multiplikation

1. Kennlinien. 2. Stabilisierung der Emitterschaltung. Schaltungstechnik 2 Übung 4

!(0) + o 1("). Es ist damit möglich, dass mehrere Familien geschlossener Orbits gleichzeitig abzweigen.

Definition und Begriffe

Diana Lange. Generative Gestaltung Operatoren

Plotten von Linien ( nach Jack Bresenham, 1962 )

Abiturprüfung Mathematik 2008 (Baden-Württemberg) Berufliche Gymnasien ohne TG Analysis, Aufgabe 1

DAS PARETO PRINZIP DER SCHLÜSSEL ZUM ERFOLG

4. Versicherungsangebot

Grundlagen des Maschinellen Lernens Kap. 4: Lernmodelle Teil II

Kapitalerhöhung - Verbuchung

Einführung in die Programmierung

1. Das dekadische Ziffernsystem (Dezimalsystem) Eine ganze Zahl z kann man als Summe von Potenzen zur Basis 10 darstellen:

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Gleichungen Lösen. Ein graphischer Blick auf Gleichungen

Numerisches Rechnen. (für Informatiker) M. Grepl P. Esser & G. Welper & L. Zhang. Institut für Geometrie und Praktische Mathematik RWTH Aachen

Prozentrechnung. Wir können nun eine Formel für die Berechnung des Prozentwertes aufstellen:

10 Erweiterung und Portierung

Matrizennorm. Definition 1. Sei A M r,s (R). Dann heißt A := sup die Matrixnorm. Wir wissen zunächst nicht, ob A eine reelle Zahl ist.

Einführung in das Arbeiten mit MS Excel. 1. Bearbeitungs

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Transkript:

Gleitkommaarithmetik und Fehleranalyse Olaf Schenk Departement Informatik, Universität Basel http://informatik.unibas.ch 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 1 IEEE Gleitkommaarithmetik und Fehleranalyse p. 1/62 Einführendes Beispiel Einführendes Beispiel: Berechnung von π U n = Umfang eines einbeschriebenen regelmässigen n-ecks = n sin(π/n). = n ) k=0 (( 1) k (π/n) 2k+1 [ 2k+1! π = n n 1/3! ( π 3 ( n) + 1/5! π ) ] 5 n +.... PSfrag replacements P=(cos( 2π n )/2, sin( 2π n )/2) y P x Bild 1: Kreis mit Radius 1/2. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 2 IEEE Gleitkommaarithmetik und Fehleranalyse p. 2/62

Einführendes Beispiel Ein Algorithmus Klar: lim n U n = lim n n sin(π/n) = π (unbrauchbar!). Setze A n = U 2 n (Umfang des regelmässigen 2 n -Ecks). Dann gelten: A 2 = U 4 = 4 (1/2) 2 + (1/2) 2 = 2 2 A n+1 = 2 n 2(1 1 (A n /2 n ) 2 ) n = 2, 3,... (Rekursionsformel)! Archimedes von Syrakus (287-212 v. Chr.): A 3 = 3.06... A 4 = 3.12... A 5 = 3.14... 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 3 IEEE Gleitkommaarithmetik und Fehleranalyse p. 3/62 Einführendes Beispiel Eine Fehlerabschätzung Zunächst gilt für h > 0 : sin(h) h h3 6 (Taylorformel) Setze h = π/n (und multipliziere mit N): D.h.: (N = 2 n ): N sin(π/n) π π3 6 N 2. Auf zum Rechner... A n π π3 6 4 n (< 10 10 für n 18) 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 4 IEEE Gleitkommaarithmetik und Fehleranalyse p. 4/62

Einführendes Beispiel Ernüchterung 100 1 Fehler bei der Berechnung von PI A_n - pi pi^3 / 6 4^n 0.01 0.0001 1e-06 Fehler 1e-08 1e-10 1e-12 1e-14 1e-16 1e-18 0 5 10 15 20 25 30 Iteration Bild 2: Fehlerschranke und Folge {A n } auf einer 32-Bit Architektur. Die berechnete Folge A n verhält sich völlig anders als die wirkliche Folge A n! Was passiert mit 64-bit? 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 5 IEEE Gleitkommaarithmetik und Fehleranalyse p. 5/62 Einführendes Beispiel Ernüchterung 100 1 Fehler bei der Berechnung von PI A_n - pi pi^3 / 6*4^n 0.01 0.0001 1e-06 Fehler 1e-08 1e-10 1e-12 1e-14 1e-16 1e-18 0 5 10 15 20 25 30 Iteration Bild 2: Fehlerschranke und Folge {A n } auf einer 64-Bit Architektur. Die berechnete Folge A n verhält sich völlig anders als die wirkliche Folge A n! Wie ist das möglich? 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 6 IEEE Gleitkommaarithmetik und Fehleranalyse p. 6/62

IEEE Gleitkommaarithmetik und Fehleranalyse Inhalt Gleitkommazahlen Rundung Der IEEE-754 Standard Korrekt gerundete Gleitkommaarithmetik Numerische Stabilität und Fehleranalyse Ein Beispiel 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 7 IEEE Gleitkommaarithmetik und Fehleranalyse p. 7/62 Gleitkommazahlen Gleitkommazahlen sind rationale Zahlen der Form b N(b > 1) ±(d 0.d 1 d 2 d 3...d p 1 ) b b e, wobei m := (d 0.d 1 d 2 d 3...d p 1 ) b e Z, e min e e max Basis, Mantisse (zur Basis b) und Exponent genannt werden. Die Ziffern d 0, d 1, d 2, d 3,..., d p 1 sind jeweils ganze Zahlen zwischen 0 und b 1, womit für die Mantisse 0 m b(1 b p ) folgt. Die Anzahl p N der Ziffern heisst Mantissenlänge. Beispiel: Die Gleitkommazahl x = (0.10101) 2 2 1 besitzt die Dezimaldarstellung (0 2 0 + 1 2 1 + 0 2 2 + 1 2 3 + 0 2 4 + 1 2 5 ) 2 2 = 21 64 = 0.328125 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 8 IEEE Gleitkommaarithmetik und Fehleranalyse p. 8/62

Gleitkommazahlen Wahl der Basis: Verschiedene Werte von b sind möglich oder werden verwendet, etwa b = 10: die Basis des täglichen Lebens b = 16: in den 60er und 70er Jahren von IBM Mainframe-Computern (Baureihe 360/370) benutzt; b = 2 : inzwischen auf allen Rechnern üblich, diese Wahl besitzt viele Vorteile sowohl technischer als auch mathematischer Natur. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 9 IEEE Gleitkommaarithmetik und Fehleranalyse p. 9/62 Analyse der Multiplikation Einfacher Fall der Multiplikation einer Zahl m = p 1 i=0 m i 2 i mit einer Zweierpotenz 2 l l 0 p 1 m 2 l = 2 l m i 2 i = i=0 p+l 1 i=l m i 2 i Das Bitmuster der Matisse der Zahl m ändert sich nicht. Die Zahl wird für l 0 nach links verschoben. Es muss nur der Exponent verändert werden. Definition Verschiebeoperator: Unter dem Verschiebeoperator versteht man die Abbildung V l : Z Z, wobei der Binärzahl m = p 1 i=0 m i 2 i die Binärzahl V l (m) = p 1 i=0 m i 2 i+l zugeordnet wird. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 10 IEEE Gleitkommaarithmetik und Fehleranalyse p. 10/62

Analyse der Multiplikation Multiplikation zweier Zahlen m und n in p-stelliger Binärdarstellung kann mittels mehrfacher Anwendung der Verschiebeoperators realisiert werden. p 1 p 1 m n = m i 2 i n = m i V i (n) i=0 i=0 Falls m i = 0 m i V i (n) liefert keinen Beitrag m i = 1 bitverschobene V i (n) trägt zum Ergebnis bei. Aufwand: Addition O(p). Multiplikation: p Additionen O(p 2 ) Hardware: gleicher Aufwand für Multiplikation und Addition, da entsprechende Instruktionseinheiten auf dem Prozessor existieren. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 11 IEEE Gleitkommaarithmetik und Fehleranalyse p. 11/62 Gleitkommazahlen Beispiel: Basis b = 2. Anzahl Stellen in Mantisse p = 3, m = (d 0.d 1 d 2 ) 2 Mögliche Mantissen: 0.00, 0.01, 0.10, 0.11, 1.00, 1.01, 1.10, 1.11 Allgemein gilt für die Mantisse m : 0 m b(1 b p ). Hier (b = 2, p = 3): 0 m 2(1 2 3 ) = 14/8 Wertebereich Der Wertebereich der Mantisse m liegt in 0 m < 2 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 12 IEEE Gleitkommaarithmetik und Fehleranalyse p. 12/62

Gleitkommazahlen Die Darstellung der Gleitkommazahlen legt die Werte von Mantisse und Exponent bisher nicht eindeutig fest. z.b. ist 16 = (0.1000) 2 2 5 = (0.0100) 2 2 6 = (0.0010) 2 2 6 =... Normalisierte Gleitkommazahlen Um möglichst viele Stellen einer Gleitkommazahl in der Mantisse unterzubringen wird der Exponent so gewählt, dass die erste Ziffer der Mantisse (d.h. die erste gültige Ziffer) von Null verschieden ist. Solche Zahlen nennt man normalisiert; nicht normalisierte Zahlen werden auch subnormal oder denormalisiert genannt. Im Fall b = 2 ist die erste (höchstwertige) Ziffer (=Bit) stets eine Eins, man kann sich deren explizite Darstellung daher sparen (verstecktes Bit, hidden bit). 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 13 IEEE Gleitkommaarithmetik und Fehleranalyse p. 13/62 Gleitkommazahlen Sonderfall Null (b = 2): Ist das höchstwertige Bit versteckt, so stellt eine Mantisse (1.d 1 d 2 d 3...d p 1 ) 2 d 1 =... = d p 1 = 0 aus lauter Nullen nicht Null, sondern die Eins dar. Es ist daher erforderlich, einen Wert des Exponenten für die Darstellung der Null zu reservieren. Ältere Implementierungen arbeiteten aus diesem Grund ohne verstecktes Bit, mussten dafür aber bei gleicher Wortbreite eine um Eins kürzere Mantissenlänge in Kauf nehmen. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 14 IEEE Gleitkommaarithmetik und Fehleranalyse p. 14/62

Gleitkommazahlen Maschinengenauigkeit Die kleinste normalisierte Gleitkommazahl mit Mantissenlänge p x = ±(d 0.d 1 d 2 d 3...d p 1 ) b b e, d 0 0 welche noch grösser als Eins ist, lautet (1.00...01) b b 0 = 1 + 1 b (p 1). Den Abstand ɛ := b (p 1) dieser Zahl zu Eins bezeichnet man als Maschinengenauigkeit (machine epsilon). 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 15 IEEE Gleitkommaarithmetik und Fehleranalyse p. 15/62 Gleitkommazahlen ULP Allgemeiner definiert man für die obige Gleitkommazahl ulp(x) := (0.00...01) b b e = b (p 1) b e = ɛ b e. Ulp steht für unit in the last place, d.h. Stellenwert der letzten Ziffer, und gibt den Abstand zur betragsmässig nächstgrösseren Gleitkommazahl an. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 16 IEEE Gleitkommaarithmetik und Fehleranalyse p. 16/62

Gleitkommazahlen Ein Spielzeugbeispiel Wir betrachten das binäre Gleitkommasystem bestehend aus Zahlen der Form ±(d 0.d 1 d 2 ) 2 2 e, wobei e { 1, 0, 1} Die normalisierten Mantissen dieses Systems sind (1.00) 2 = 1, (1.01) 2 = 1.25, (1.10) 2 = 1.5, (1.11) 2 = 1.75, Damit ergeben sich 24 normalisierte Gleitkommazahlen, zusammen mit der Null also 25. 4 3 2 1 0 1 2 3 4 Bild 3: Verteilung der normalisierten Gleitkommazahlen. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 17 IEEE Gleitkommaarithmetik und Fehleranalyse p. 17/62 Gleitkommazahlen Charakteristische Grössen dieses Systems Mantissenlänge: p = 3. grösste normalisierte Zahl: N max = (1.11) 2 2 1 = 3.5 kleinste normalisierte positive Zahl: N min = (1.00) 2 2 1 = 0.5 Maschinengenauigkeit: ɛ = (1.01) 2 (1.00) 2 = 0.25 ɛ/2 e = 1 ulp ((d 0 d 1 d 2 ) 2 2 e ) = ɛ e = 0 2ɛ e = 1. Wir bemerken ferner: Die Abstände zwischen den Gleitkommazahlen nehmen von der Null weg zu. Aufgrund der Normalisierung klafft eine Lücke zwischen Null und der kleinsten normalisierten Zahl. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 18 IEEE Gleitkommaarithmetik und Fehleranalyse p. 18/62

Gleitkommazahlen Subnormale Zahlen Die eben erwähnte Lücke kann geschlossen werden wenn wir für Zahlen mit Exponenten e min auch denormalisierte Mantissen zulassen. In unserem Beispiel kommen dadurch die sechs Zahlen ±(0.01) 2 2 1 = ±0.125 ±(0.10) 2 2 1 = ±0.25 ±(0.11) 2 2 1 = ±0.375 hinzu. Der Abstand dieser Zahlen zur nächstgelegenen Gleitkommazahl ist allerdings gross relativ zu deren Betrag. 4 3 2 1 0 1 2 3 4 Bild 3: Verteilung aller Gleitkommazahlen. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 19 IEEE Gleitkommaarithmetik und Fehleranalyse p. 19/62 Rundung Sei M := Menge der Zahlen eines Gleitkommasystems =: Maschinenzahlen Liegt eine Eingangsgrösse (etwa 1/10 im Binärsystem) oder ein Zwischenergebnis x in R \ M, so muss hierfür ein Ersatz x M bestimmt werden, ein Vorgang den wir mit Rundung bezeichnen: rd : R M, x rd(x) Üblich: Rundung zur nächstgelegenen Maschinenzahl ist (hier b = 10) x = ±(d 0 d 1 d 2 d 3... d p 1 d p...) 10 e, mit e min e e max aber möglicherweise unendlich langer Mantisse, so setzen wir { rd(x) := ±d 0 d 1 d 2 d 3... d p 1 10 e d p 1 : d p 4, dp 1 = d p 1 + 1 : d p 5 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 20 IEEE Gleitkommaarithmetik und Fehleranalyse p. 20/62

Rundung Ist d p 1 = 9, so entsteht ein Übertrag und d p 2, möglicherweise auch d p 3, sowie e, müssen modifiziert werden. Für p = 4 gilt etwa rd(4.4499) = 4.450 10 0 und rd(9.9999) = 1.000 10 1. Unschöne Eigenschaft dieser Rundung (hier stets e = 0): rd(1.0005) = 1.001, rd(rd(1.000 + 0.0005) 0.0005) = rd(1.001 0.0005) Dieses Phänomen bezeichnet man als Drift. = rd(1.0005) = 1.001. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 21 IEEE Gleitkommaarithmetik und Fehleranalyse p. 21/62 Rundung (Absoluter) Fehler bei Rundung: Für eine Zahl x = ±m 10 e im normalisierten Bereich von M (1 m < 10, e min e e max ) gilt x rd(x) 1 2 10 (p 1) 10 e. Allgemein: x rd(x) 1 2 b (p 1) b e = 1 2 ulp(x) 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 22 IEEE Gleitkommaarithmetik und Fehleranalyse p. 22/62

Rundung Relativer Fehler bei Rundung: x rd(x) x 1 2 b (p 1) b e m b e u heisst Rundungseinheit (unit roundoff). Anders formuliert rd(x) = (1 + δ)x mit δ u. 1 2 b (p 1) = 1 ɛ =: u. 2 Manchmal wird auch u als Maschinengenauigkeit definiert. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 23 IEEE Gleitkommaarithmetik und Fehleranalyse p. 23/62 IEEE-754 Standard Nach eine langen Zeit des Wildwuchses im Bereich der Gleitkomma-Arithmetik auf Computern fand Ende der 70er Jahre ein Standardisierungsprozess a statt. Dieser führte schliesslich 1985 zur Verabschiedung des IEEE-754 Standards für binäre Gleitkommaarithmetika b, der inzwischen von nahezu allen Computerherstellern befolgt wird. Der IEEE-Standard enthält drei wesentliche Forderungen: Darstellung: Konsistente Darstellung von Gleitkommazahlen auf allen modernen Rechnerarchitekturen Rundung: Korrekt gerundete Gleitkommaoperationen bezüglich verschiedener Rundungsmodi Ausnahmen: Wohldefiniertes Verhalten bei Ausnahmesituationen (wie etwa Division durch Null) a Angeführt von William Kahan, University of Berkeley b IEEE = Institute of Electrical and Electronics Engineers 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 24 IEEE Gleitkommaarithmetik und Fehleranalyse p. 24/62

IEEE-754 Standard Sonderzahlen in IEEE 754 ± Unendlich: Manchmal ist es sinnvoll, mit Ausdrücken wie 1/0 weiterzurechnen, anstatt das Programm abzubrechen. In IEEE-Arithmetik sind die Sonderzahlen ± definiert, welche folgenden Konventionen unterliegen: Die normalisierten Mantissen dieses Systems sind a + = (a > ), a = (a < ), a = (a > 0), a/0 = (a > 0), usw. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 25 IEEE Gleitkommaarithmetik und Fehleranalyse p. 25/62 IEEE-754 Standard Sonderzahlen in IEEE 754 NaNs: Ist das Ergebnis einer arithmetischen Operation undefiniert, so wird dieses auf den Wert NaN (Not a Number) gesetzt. Beispiele:, 0, 0/0 etc. 0: IEEE-Arithmetik unterscheidet 0 von +0. So gilt a/( 0) =, (a > 0) und umgekehrt wenn a < 0. Achtung: Es gilt zwar 0 = 0, aber. Aus diesem Grund ist a = b nicht äquivalent mit 1/a = 1/b, etwa wenn a = 0 und b = 0. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 26 IEEE Gleitkommaarithmetik und Fehleranalyse p. 26/62

IEEE-754 Standard IEEE-Arithmetik spezifiziert vier Formate für Gleitkommazahlen: Single Double (optional, aber vom C-Standard verlangt), so gut wie überall verfügbar Single-extended (optional) Double-extended (optional, z.b. auf SUN Arbeitsplatzrechnern wird dieses Format durch Software unterstützt, genauer aber viel langsamer) 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 27 IEEE Gleitkommaarithmetik und Fehleranalyse p. 27/62 IEEE-754 Standard Single-Format (FORTRAN: REAL*4, C: float) = 1 Wort = 32 Bits, ± Exp Mantisse 0 1 9 31 Vorzeichen (1 Bit): 1 Bit, 0 = +, 1 = Exponent (8 Bits): Der Exponent wird verschoben dargestellt (biased Exponent), d.h. der Wert e des Exponenten ergibt sich aus e = E 127, 1 E 254, d.h. 126 e 127 wobei E die durch die 8 Bits dargestellte Zahl bezeichnet. Die Werte E = 0 und E = 255 sind reserviert für Sonderzahlen. Mantisse (23 Bits): Diese Ziffern stellen den Binärbruch dar. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 28 IEEE Gleitkommaarithmetik und Fehleranalyse p. 28/62

IEEE-754 Standard Vorteil der Darstellung Durch diese Speicherung können zwei Gleitkommazahlen m, n M effizient verglichen werden: m 0 > n 0 : Vorzeichenbit vergleichen m E > n E : Exponenten vergleichen m man > n man : Mantisse vergleichen 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 29 IEEE Gleitkommaarithmetik und Fehleranalyse p. 29/62 IEEE-754 Standard Die IEEE Single-Zahlen im Überblick Bitmuster E im Exponenten dargestellte Gleitkommazahl (00000000) 2 = 0 ±(0.d 1 d 2...d 23 ) 2 2 126 (00000001) 2 = 1 ±(1.d 1 d 2...d 23 ) 2 2 126.. (01111111) 2 = 127 ±(1.d 1 d 2...d 23 ) 2 2 0 (10000000) 2 = 128 ±(1.d 1 d 2...d 23 ) 2 2 1.. (11111110) 2 = 254 ±(1.d 1 d 2...d 23 ) 2 2 127 (11111111) 2 = 255 ± falls d 1 = d 2 = = d 23 = 0 sonst NaN 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 30 IEEE Gleitkommaarithmetik und Fehleranalyse p. 30/62

IEEE-754 Standard Charakteristische Grössen von IEEE Single Mantissenlänge: p = 23 + (1) grösste normalisierte Gleitkommazahl: N max = (1.11 1) 2 2 127 = 2(1 2 24 ) 2 127 2 128 = 3.4 10 38 kleinste normalisierte positive Gleitkommazahl: N min = (1.00 0) 2 2 126 = 2 126 1.2 10 38 kleinste positive denormalisierte Gleitkommazahl : M min = (0.0 01) 2 2 126 = 2 149 1.4 10 45 Maschinengenauigkeit: ɛ = (1.0 01) 2 (1.0 00) 2 = 2 23 1.2 10 7 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 31 IEEE Gleitkommaarithmetik und Fehleranalyse p. 31/62 IEEE-754 Standard Double-Format (FORTRAN: REAL*8, C: double) = 2 Wort = 64 Bits, ± Exp Man- tisse 0 1 11 32 63 d.h. 1 Bit Vorzeichen, 11 Bit Exponent und (1+)52 Bit Mantisse. Charakteristika: p = 53 e min = 1 1023 = 1022 e max = 2046 1023 = 1023 N min = 2 1022 2.2 10 308 N max 2 1024 1.8 10 308 M min = 2 1074 4.9 10 324 ɛ = 2 52 2.2 10 16 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 32 IEEE Gleitkommaarithmetik und Fehleranalyse p. 32/62

Rundung in IEEE Arithmetik Zu x R seien x, x + M die nächstgelegenen Maschinenzahlen kleiner bzw. grösser als x. IEEE-Arithmetik definiert rd(x) := x falls x M, andernfalls hängt der Wert rd(x) vom aktuell eingestellten Rundungsmodus ab, welcher einer der folgenden vier sein kann: Abrunden. rd(x) = x Aufrunden. rd(x) = x + Rundung zur Null. rd(x) = x, falls x 0 und rd(x) = x + falls x 0. Rundung zur nächsten Maschinenzahl (Default) rd(x) erhält den näher an x liegenden Wert unter x und x +. Liegt x genau zwischen x und x +, so wird diejenige Zahl als rd(x) gewählt, deren niedrigstwertiges Bit Null ist. (Dies verhindert Drift.) Weitere Ausnahme: rd(x) = falls x > N max und rd(x) = falls x < N max. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 33 IEEE Gleitkommaarithmetik und Fehleranalyse p. 33/62 IEEE-754 Standard Ausnahmesituationen (exceptions) IEEE-Arithmetik definiert fünf Ausnahmesituationen sowie für jede eine Standardreaktion: Invalid operation (ungültige Operation) 0/0, /,, 1 und dergleichen. Division by zero (Division durch Null) Overflow (Exponentüberlauf) Ergebnis einer Operation grösser als N max. Underflow (Exponentunterlauf) Ergebnis einer Operation kleiner als N min. Das Weiterrechnen mit denormalisierten Maschinenzahlen bezeichnet man als gradual underflow. Inexact (ungenaues Ergebnis) Resultat keine Maschinenzahl (dies ist eigentlich keine Ausnahme) 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 34 IEEE Gleitkommaarithmetik und Fehleranalyse p. 34/62

IEEE-754 Standard invalid operation Standardreaktion Setze Ergebnis auf NaN division by zero Setze Ergebnis auf ± overflow underflow inexact Setze Ergebnis auf ± oder ±N max Setze Ergebnis auf ±0, N min oder subnormal Setze Ergebnis auf korrekt gerundeten Wert Exponentenüberlauf kann durch geeignete Skalierung oft auf Kosten einen harmlosen Unterlaufs vermieden werden. Beispiel: c = a 2 + b 2 mit a = 10 60 und b = 1 (Rechnung mit vier Dezimalstellen in Mantisse und zwei Dezimalstellen im Exponent). Standardauswertung verursacht Überlauf. Besser: c = s (a/s) 2 + (b/s) 2 mit s = max a, b. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 35 IEEE Gleitkommaarithmetik und Fehleranalyse p. 35/62 Korrekt gerundete Gleitkommaarithmetik Die Machinenzahlen M sind bezüglich der elementaren arithmetischen Operationen (Addition, Subtraktion, Multiplikation und Division) nicht abgeschlossen (selbst wenn wir für die Exponenten beliebige Werte erlauben). Beispiele: Ist x = 1.1 10 0 eine Gleitkommazahl zur Basis 10 mit der Mantissenlänge 2, während x x = 1.21 10 1 eine dreistellige Mantisse besitzt. Im IEEE-Single Format sind 1 und 2 24 beides Maschinenzahlen, deren Summe 1 + 2 24 hingegen nicht. Realisierung einer Maschinenoperation Berechne für die Maschinenzahl m und n das Ergebnis mit höherer Genauigkeit und Runde das Resultat auf eine Maschinenzahl in M. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 36 IEEE Gleitkommaarithmetik und Fehleranalyse p. 36/62

IEEE-754 Standard Für jede der Operationen {+,,, } wird die entsprechende korrekt gerundete Gleitkommaoperation definiert durch fl(x y) := rd(x y), x, y M Für alle x, y M gilt daher, falls weder Unter- noch Überlauf eintritt, fl(x y) = (1 + δ)(x y) mit δ u. Die klassischen Gesetzen der Arithmetik gelten nicht unbedingt: Kommutativgesetz: x + y = y + x Assoziativgesetz: (x + y) + z x + (y + z) Distributivgesetz: x(x + y) xx + xy 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 37 IEEE Gleitkommaarithmetik und Fehleranalyse p. 37/62 Korrekt gerundetete Gleitkommaarithmetik Warum ist korrekte Rundung so wichtig? Man betrachte etwa die folgenden vier Fragen: Frage 1: Gilt fl(1 x) = x für x M? Frage 2: Gilt fl(x/x) = 1 für x M, x 0, x endlich? Frage 3: Gilt fl(0.5 x) = fl(x/2) für x M? Frage 4: Folgt aus fl(x y) = 0 für x, y M auch x = y? In IEEE-Arithmetik kann man jede dieser Fragen bejahen. In den 60er und 70er Jahren existierte zu jede Frage ein (weit verbreitetes) Computersystem, bei welchem für bestimmte Daten die Antwort nein lautete. Insbesondere kann man Frage 4 bejahen wegen der Verwendung subnormaler Zahlen. a a http://www.cs.nyu.edu/cs/faculty/overton/book/docs/kahantalk.pdf 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 38 IEEE Gleitkommaarithmetik und Fehleranalyse p. 38/62

Korrekt gerundetete Gleitkommaarithmetik Ein Blick in die Implementierung: Addition und Subtraktion Gegeben: zwei IEEE-Single Zahlen x = m x 2 e x, y = m y 2 e y. Gilt e x = e y, so ergibt sich fl(x + y) aus (m x + m y ) 2 e x mit anschliessender Normalisierung. Beispiel: 3 + 2: (1.10000000000000000000000) 2 2 1 + (1.00000000000000000000000) 2 2 1 = (10.10000000000000000000000) 2 2 1 Normalisierung: (1.01000000000000000000000) 2 2 2 Ist e x > e y, so müssen die Mantissen zuerst angepasst werden, z.b. bei 3 + 3/4: (1.10000000000000000000000) 2 2 1 + (0.01100000000000000000000) 2 2 1 = (1.11100000000000000000000) 2 2 1 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 39 IEEE Gleitkommaarithmetik und Fehleranalyse p. 39/62 Korrekt gerundetete Gleitkommaarithmetik Hilfsziffern (guard digits) Betrachte die Operation 3 + 3 2 23 : ( 1.10000000000000000000000 ) 2 2 1 +( 0.00000000000000000000001 1 ) 2 2 1 = ( 1.10000000000000000000001 1 ) 2 2 1 Abgerundet: ( 1.10000000000000000000001 ) 2 2 1 Aufgerundet: ( 1.10000000000000000000010 ) 2 2 1 IEEE Default: ( 1.10000000000000000000010 ) 2 2 1 In diesem Fall muss gerundet werden, da das Ergebnis keine Maschinenzahl ist. Allerdings erfordert die Berechnung der korrekt gerundeten Resultats eine Hilfsziffer rechts vom niedrigstwertigen Bit. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 40 IEEE Gleitkommaarithmetik und Fehleranalyse p. 40/62

Korrekt gerundetete Gleitkommaarithmetik PSfrag replacements Korrekt gerundete Gleitkommaarithmetik entspricht bei IEEE Rundung zur nächstgelegenen Gleitkommazahl: 0100 0101 0110 0111 1000 Bild 4: IEEE Rundung zwischen 2 Gleitkommazahlen. 0101 Rundung auf 0100 0110 Rundung auf 1000 Drift! 0111 Rundung auf 1000 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 41 IEEE Gleitkommaarithmetik und Fehleranalyse p. 41/62 Korrekt gerundetete Gleitkommaarithmetik Beispiel ohne Hilfsziffern (guard digits) Betrachte die Operation 3 + 3 2 23 : ( 1.10000000000000000000000 ) 2 2 1 +( 0.00000000000000000000001 ) 2 2 1 = ( 1.10000000000000000000001 ) 2 2 1 IEEE Default: ( 1.10000000000000000000001 ) 2 2 1 Ohne Hilfsziffer würde hier auch bei IEEE Default Rundung abgerundet werden. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 42 IEEE Gleitkommaarithmetik und Fehleranalyse p. 42/62

Korrekt gerundetete Gleitkommaarithmetik Rundung darf erst nach der Normalisierung durchgeführt werden. Betrachte die Operation 3 (1 + 2 22 + 2 23 ): ( 1.10000000000000000000000 ) 2 2 1 ( 0.10000000000000000000001 1 ) 2 2 1 = ( 0.11111111111111111111110 1 ) 2 2 1 Normierung: ( 1.11111111111111111111101 ) 2 2 0 In diesem Fall ist die Rundung nicht notwendig. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 43 IEEE Gleitkommaarithmetik und Fehleranalyse p. 43/62 Korrekt gerundetete Gleitkommaarithmetik Auslöschung Wir betrachten die Subtraktion der (benachbarten) Zahlen x = 1 und y = (1.11... 1) 2 2 1. x y = 1 2 24 ist eine Gleitkommazahl!. ( 1.00000000000000000000000 ) 2 2 0 ( 0.11111111111111111111111 1 ) 2 2 0 = ( 0.00000000000000000000000 1 ) 2 2 0 Normalisierung ( 1.00000000000000000000000 ) 2 2 24 Man spricht hier von Auslöschung, da sich alle Ziffern bis auf die letzte wegheben. Auch hier ist eine Hilfsziffer unabdingbar für korrektes IEEE Rundung. Ohne Hilfsziffer wäre das Ergebnis falsch! 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 44 IEEE Gleitkommaarithmetik und Fehleranalyse p. 44/62

Korrekt gerundetete Gleitkommaarithmetik Notwendigkeit mehrerer Hilfsziffern Betrachte x y mit x = 1 und y = (1.00... 01) 2 2 25. Bei der Verwendung von 25 Hilfsziffern erhalten wir ( 1.00000000000000000000000 ) 2 2 0 ( 0.00000000000000000000000 0100000000000000000000001 ) 2 2 0 = ( 0.11111111111111111111111 1011111111111111111111111 ) 2 2 0 Normierung = ( 1.11111111111111111111111 0111111111111111111111110 ) 2 2 1 Rundung zur nächstgelegenen Gleitkommazahl = ( 1.11111111111111111111111 ) 2 2 1 Weniger als 25 Hilfsziffern hätten hier nicht genügt, um das korrekt gerundete Ergebnis zu berechnen. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 45 IEEE Gleitkommaarithmetik und Fehleranalyse p. 45/62 Korrekt gerundetete Gleitkommaarithmetik Beispiel mit 2 Hilfsziffern Betrachte x y mit x = 1 und y = (1.00... 01) 2 2 25. Bei der Verwendung von 2 Hilfsziffern erhalten wir ( 1.00000000000000000000000 ) 2 2 0 ( 0.00000000000000000000000 01 ) 2 2 0 = ( 0.11111111111111111111111 11 ) 2 2 0 Normierung = ( 1.11111111111111111111111 1 ) 2 2 1 Rundung zur nächstgelegenen Gleitkommazahl = ( 10.00000000000000000000000 ) 2 2 1 Normierung = ( 1.00000000000000000000000 ) 2 2 0 ( 1.11111111111111111111111 ) 2 2 1 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 46 IEEE Gleitkommaarithmetik und Fehleranalyse p. 46/62

Korrekt gerundetete Gleitkommaarithmetik Man kommt aber mit weniger Hilfsbit aus Wir verwenden nun zwei Hilfsziffern und ein zusätzliches Hilfsbit, welches dann gesetzt wird, wenn beim Shiften der Mantisse mindestens ein von Null verschiedenes Bit verlorengegangen (d.h. jenseits der zweiten Hilfsziffer gewandert) ist. Dieses Bit setzen wir vor der Subtraktion an die dritte Hilfsziffer: ( 1.00000000000000000000000 ) 2 2 0 ( 0.00000000000000000000000 011 ) 2 2 0 = ( 0.11111111111111111111111 101 ) 2 2 0 Normalisierung: ( 1.11111111111111111111111 01 ) 2 2 1 Rundung: ( 1.11111111111111111111111 ) 2 2 1 Man kann zeigen, dass für korrekt gerundete Subtraktion nicht mehr als diese zwei Hilfsziffern und das Hilfsbit (sticky bit) benötigt werden. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 47 IEEE Gleitkommaarithmetik und Fehleranalyse p. 47/62 Korrekt gerundetete Gleitkommaarithmetik Frage: Welches Programm wird eine längere Folge {x = 2 n } für n = 1, 2, 3,... berechnen? 1 int n = 0; float x = 1; 2 /*Repeatedly divide x by 2 until it underflows to 0 */ 3 while (x > 0) { 4 x = x/2; 5 n++; 6 printf("(2 raised to the power -%d) = %e \n", n, x); 7 } 1 int n = 0; float x = 1, y = 2; 2 /* Repeatedly divide x by 2 until y = (1 + x) rounds to 1 */ 3 while (y > 1) { 4 x = x/2; 5 y = 1 + x; 6 n++; 7 printf("1 added to (2 raised to the power -%d) = %e \n", n, y); 8 } 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 48 IEEE Gleitkommaarithmetik und Fehleranalyse p. 48/62

Numerische Stabilität und Fehleranalyse Es sei ŷ = f l(f(x)) das in Gleitkommaarithmetik berechnete Ergebnis einer Funktion y = f(x). Wie beurteilt man die Qualität von ŷ? (Relativer) Vorwärtsfehler: (y ŷ)/y. (Relativer) Rückwärtsfehler: (x ˆx)/x, dabei ist ˆx das (ein) Eingabedatum, das bei rundungsfreier Rechnung zu ŷ führt: f(ˆx) = ŷ. (Rundungsfehler werden als Datenfehler interpretiert). Mit Störungstheorie kann man Vorwärtsfehler durch Rückwärtsfehler abschätzen. Faustregel: Vorwärtsfehler Konditionszahl Rückwärtsfehler. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 49 IEEE Gleitkommaarithmetik und Fehleranalyse p. 49/62 Numerische Stabilität und Fehleranalyse Y X (absoluter) Rückwärtsfehler exakt berechnet (absoluter) Vorwärtsfehler ^X Daten exakt Ergebnisse ^Y Bild 4: Vorwärtsfehler und Rückwärtsfehler. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 50 IEEE Gleitkommaarithmetik und Fehleranalyse p. 50/62

Numerische Stabilität und Fehleranalyse Ein Algorithmus heisst vorwärtsstabil, wenn der Vorwärtsfehler klein ist, rückwärtsstabil, wenn der Rückwärtsfehler klein ist, was klein bedeutet, hängt vom Problem und der Maschinengenauigkeit ab. Die Kondition(szahl) eines Problems (hat nichts mit Gleitkommaarithmetik zu tun!!) ist ein Mass dafür, wie empfindlich das Ergebnis auf Störungen der Daten reagiert. Ein Problem ist gut (schlecht) konditioniert, wenn seine Konditionszahl klein (gross) ist. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 51 IEEE Gleitkommaarithmetik und Fehleranalyse p. 51/62 Numerische Stabilität und Fehleranalyse Bestimme y = f(x), Störung der Daten: x ŷ = f(x + x) = f(x) + f (x) x + 1 2 f (ζ)( x) 2 x klein: ŷ = f(x + x) f(x) + f (x) x = y + f(x) x, oder f(x + x) f(x) f(x) = ŷ y y xf (x) f(x) x x. (Relative) Konditionszahl von f an der Stelle x: c f (x) = xf (x) f(x). 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 52 IEEE Gleitkommaarithmetik und Fehleranalyse p. 52/62

Numerische Stabilität und Fehleranalyse Beispiel: f(x) = log(x), d.h.: c f (x) = x/x log(x) = kleine und sehr grosse (positive) x, riesig für x 1: 1 log(x) x 1 = 0.01 : c f (x 1 ) = 0.21715, x 2 = 0.99 : c f (x 2 ) = 99.4992, x 3 = 100. : c f (x 3 ) = 0.21715. moderat für sehr Wie wirkt sich eine relative Störung von ɛ x = ( x)/x = 0.001 aus? f(x k + 0.001x k ) f(x k ) f(x k ) 0.001c f (x k ) = 0.001 1 log(x k ). k rel. Fehler Prognose 1 2.1704 10 4 2.1715 10 4 2 9.9945 10 2 9.9499 10 2 3 2.1704 10 4 2.1715 10 4 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 53 IEEE Gleitkommaarithmetik und Fehleranalyse p. 53/62 Numerische Stabilität und Fehleranalyse Allgemeiner: y = f(x 1, x 2,..., x n ). Absolute Störungen der Daten x k (k = 1, 2,..., n), verursachen absoluten Fehler im Ergebnis: y = f(x 1 + x 1,..., x n + x n ) f(x 1,..., x n ) d k = f(x 1.x 2,..., x n ) x k n d k x k. k=1 (absolute Konditionszahlen von f). Relative Störungen der Daten, ɛ k = x k /x k (k = 1, 2,..., n), verursachen relativen Fehler im Ergebnis: y y = f(x 1 + x 1,..., x n + x n ) f(x 1,..., x n ) f(x 1,..., x n ) (relative) Konditionszahlen von f: c k = n c k ɛ k k=1 x k f(x 1,...,x n ) f(x 1,...,x n ) x k 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 54 IEEE Gleitkommaarithmetik und Fehleranalyse p. 54/62

Numerische Stabilität und Fehleranalyse Beispiel: Grundrechenarten y = f ( ) (x 1, x 2 ) = x 1 x 2, d.h. c 1 = 1 und c 2 = 1 (unproblematisch). y = f ( ) (x 1, x 2 ) = x 1 /x 2, d.h. c 1 = 1 und c 2 = 1 (unproblematisch). y = f (+) (x 1, x 2 ) = x 1 + x 2, d.h. c 1 = x 1 /(x 1 + x 2 ) und c 2 = x 2 /(x 1 + x 2 ). y = f ( ) (x 1, x 2 ) = x 1 x 2, d.h. c 1 = x 1 /(x 1 x 2 )und c 2 = x 2 /(x 1 x 2 ). Bei den Operationen + und können die Konditionszahlen riesig werden, wenn der Nenner von c : x 1 x 2 x 1 x 2 Addition schlecht konditioniert. Subtraktion schlecht konditioniert. (Auslöschung!) 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 55 IEEE Gleitkommaarithmetik und Fehleranalyse p. 55/62 Numerische Stabilität und Fehleranalyse Beispiel Grundrechenarten: Subtraktion Wert Störung Relative Störung Eingabedaten x 1 = 3.14159 x 1 = 10 5 ɛ 1 = 3.18 10 6 x 2 = 3.14140 x 2 = 2 10 5 ɛ 2 = 6.36 10 6 Subtraktion und gestörte Subtraktion: y = x 1 x 2 = 0.00019 (x 1 + x 1 ) (x 2 + x 2 ) = 0.00018 Also ist der relative Fehler y y Prognose: c 1 = 1.65 10 4 = 0.00019 0.00018 0.00019 = 5.26 10 2. c 2 = 1.65 10 4 y c 1 ɛ 1 + c 2 ɛ 2 1.65 10 4 (3.18 10 6 + 6.36 10 6 ) 1.57 10 1 y 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 56 IEEE Gleitkommaarithmetik und Fehleranalyse p. 56/62

Beispiel Die quadratische Gleichung hat die Lösungen x 2 bx + c = 0 x 1/2 = b ± b 2 4c 2 Für b = 3.6678 und c = 2.0798 10 2 erhält man nach Rechnung mit fünfstelliger Dezimalmantisse Warum? x 1 = 3.6673 rel. Fehler: 4.7 10 6 x 2 = 5.5 10 4 rel. Fehler: 3.0 10 2 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 57 IEEE Gleitkommaarithmetik und Fehleranalyse p. 57/62 Beispiel Schritt Ergebnis rel. Fehler 1. b 2 1.3453 10 +1 1.8 10 5 2. 4c 8.3192 10 3 0.0 3. b 2 4c 1.3445 10 +1 4.1 10 5 4. b 2 4c 3.6667 10 +0 9.3 10 6 5. b b 2 4c 1.1000 10 3 3.0 10 2 6. x 2 = (b b 2 4c)/2 5.5000 10 4 3.0 10 2 5. b + b 2 4c 7.3345 10 +0 4.7 10 6 6. x 1 = (b + b 2 4c)/2 3.6673 10 +0 4.7 10 6 7. x 2 = c/x1 5.6713 10 4 1.1 10 6 Trick: x 2 = (b b 2 4c/2) = (b b 2 4c)(b+ b 2 4c) 2(b+ b 2 4c) c = c 1 2 (b+ b 2 4c) x 1 = b2 b 2 +4c 2(b+ b 2 4c) = 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 58 IEEE Gleitkommaarithmetik und Fehleranalyse p. 58/62

Beispiel Beispiel aus der Einleitung: A n+1 = 2 n[ 2(1 ] 1/2 1 (A n /2 n ) } {{ } 2 ) Auslöschung! Setze R n := 4 1 1 (A n /2 n ) 2 2, d.h. A n+1 = 2 n R n Beachte: R n = 4Z n und Z n ist (die kleinere) Lösung von X 2 X + 1 4 (A n/2 n ) 2 = X 2 X + (A n /2 n+1 ) 2 = 0. Trick: Z n = 2(A n /2 n+1 ) 2 1 + 1 (A n /2 n ) 2, R n = 4Z n, A n+1 = 2 n R n. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 59 IEEE Gleitkommaarithmetik und Fehleranalyse p. 59/62 Beispiel 1 0.01 Fehler bei der Berechnung von PI A_n - pi pi^3 / 6*4^n 0.0001 1e-06 Fehler 1e-08 1e-10 1e-12 1e-14 1e-16 1e-18 0 5 10 15 20 25 30 Iteration Bild 5: Fehlerschranke und modifizierte Folge {A n } auf einer 32-Bit Architektur. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 60 IEEE Gleitkommaarithmetik und Fehleranalyse p. 60/62

Beispiel 1 0.01 Fehler bei der Berechnung von PI A_n - pi pi^3 / 6*4^n 0.0001 1e-06 Fehler 1e-08 1e-10 1e-12 1e-14 1e-16 1e-18 0 5 10 15 20 25 30 Iteration Bild 6: Fehlerschranke und modifizierte Folge {A n } auf einer 64-Bit Architektur. 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 61 IEEE Gleitkommaarithmetik und Fehleranalyse p. 61/62 Literaturhinweise Numerical Computing with IEEE Floating Point Arithmetic, Michael L. Overton, Courant Institute of MAthematical Science New York University. http://www.cs.nyu.edu/cs/faculty/overton/book Prof. William Kahan, Professor of Mathematics, and of E.E., Computer Science Department University of Berkeley. http://www.cs.berkeley.edu/~wkahan Numerik für Informatiker, Huckle und Schneider, Universität München. Institut Ingenieuranwendungen in der Informatik. http://wwwzenger.informatik.tu-muenchen.de What Every Computer Scientist Should Know About Floating Point Arithmetic, David Goldberg http://docs.sun.com/source/806-3568/ncg_goldberg.html 8 Mai 2003 IEEE Gleitkommaarithmetik und Fehleranalyse 62 IEEE Gleitkommaarithmetik und Fehleranalyse p. 62/62