Rechnen mit garantierter Genauigkeit Wolfgang Mühlbauer Stephan Thoma Proseminar Rechnerarchitekturen 5. Juli 2001
Überblick Erweiterte Arithmetik: Erhöhung der Rechengenauigkeit Intervallarithmetik: Garantie, dass ein Ergebnis richtig ist
Ein einführendes Beispiel a = 12345678 b = 12345679 b2 - ab - a = ? Ausrechnen per Hand: b2 - ab - a = b (b - a) - a = 1 Ausrechnen mit Taschenrechner: b2 - ab - a = 322
Das Gleitkommaformat: floating-point Das single-Format: 32 bit 00000010 11000000000000000000000 ± Exponent Mantisse 8 bit 23 bit Prinzip der Normalisierung!
Beispiel = + 1,75 * 22 = 7 Vorzeichenbit : positiv Exponent : 2 00000010 11000000000000000000000 ± Exponent Mantisse Vorzeichenbit : positiv Exponent : 2 Mantisse : 1,75 = + 1,75 * 22 = 7
IEEE-Standard 754 ± Exponent Mantisse Gesamt Single 1 8 23 32 Double 11 52 64 Extended 15 80 112 128
Warum Gleitkommaformat? Darstellung von Zahlen unter- schiedlichster Größenordnung Einsparen von Speicherplatz Kleine Register und Addierer Historische Gründe
Beispiel 1 a + b – a = ? Annahme: Darstellung im Dezimalsystem Mantisse mit 16 Stellen a = 1,109632969473378 * 100 b = 6,748659387134009 * 10-12 a + b – a = ?
Beispiel 1: Auslöschung a + b 1,109632969473378 0,000000000006748659387134009 6,748659387134009 * 10-12 + 1,109632969480126659387134009 - a - 1,109632969473378 0,000000000006748 = 6,748 * 10-12 Exakt: b = 6,7486559387134009 * 10-12
Beispiel 2: Auslöschung 1020 + 17 - 10 + 130 - 1020 = 1020 + 17 - 1020 - 10 + 130 = 1020 - 1020 + 17 - 10 + 130 = 1020 + 17 + 130 - 1020 - 10 = 120 137 -10 Verletzung des Kommutativgesetzes!
Beispiel 3: Auslöschung 64 919 121 x – 159 018 721 y = 1 41 869 520,5 x – 102 558 961 y = 0 Lösung: Mit Gleitkommarechnung: x = 102 558 961 y = 41 869 520,5 Richtige Lösung: x = 205 117 922 y = 83 739 041
Wo stehen wir? Darstellung reeller Zahlen durch das Gleitkommaformat Probleme des Gleitkommaformats Auslöschung gültiger Ziffern Verletzung von mathematischen Gesetzen
Vermeiden von Auslöschung 1020 + 17 - 10 + 130 – 1020 = 0 ersetzen durch: 1020 - 1020 + 17 - 10 + 130 = 137 Optimierung von Algorithmen: Algorithmen, die ohne Subtraktion nahezu gleicher Zahlen auskommen
Mehrfachlange Arithmetiken Exponent Mantisse + - eine Gleitkommazahl Speicheradresse x y Speicherinhalt 1,3 * 10-1 1,2*10-19 Wert: 0,130000000000000000120
Festkommadarstellung Festkommdarstellung (fixed point): Das Komma sitzt an einer festen Stelle. (vgl. Darstellung von ganzen Zahlen) Beispiel: , 0 0 0 1 1 0 1 1 1 1 0 0 0 0 = 13, 875
Beispiel a = 1,109632969473378 * 100 b = 6,748659387134009 * 10-12 a + b – a = ? Vorher: 6,748 * 10-12 Festkommaregister (29 Stellen) 0,0000000000067486593871340090 =6,748659387134009 * 10-12 0,0000000000000000000000000000 0,0000000000000000000000000000 1,109632969473378 1,1096329694733780000000000000 6748659387134009 1,1096329694801266593871340090 1,109632969473378
Festkommarithmetik Prinzip: Rechnen mit extrem langen Festkommazahlen Vorteil: Keine Normalisierung Nachteil: Mangelnde Unterstützung durch die Hardware
Bedeutung des Skalarproduktes Zentrale Bedeutung in der Mathematik Lineare Algebra: Lösen von linearen Gleichungssystemen Numerik: Elimination von Rundungsfehlern Zentrale Bedeutung im Zusammenhang mit mehrfachlanger Arithmetik a = a1 + a2 b = b1 + b2 a * b = (a1 + a2) * (b1 + b2) = = a1b1 + a1b2 + a2b1 + a2b2 Skalarprodukt!
Das Skalarprodukt als fünfte Grundrechenart Idee: Berechnung des Skalarproduktes mit nur einer Rundung am Ende des Ergebnisses Realisierung: 1. Aufaddieren in einem Langzahlregister 2. Erst das Endergebnis runden!
Erweiterte Arithmetik Advanced Computer Arithmetic erhöht die Genauigkeit grundlegender Operationen Skalarprodukt als 5. Grundrechenart (einmalige Rundung) Intervallrechnung (dazu gleich mehr) Ausweitung der Rechenoperationen auf reelle und komplexe Vektoren und Matrizen Realisierung durch: Software: Neue Programmiersprachen Hardware: Co-Prozessor-Chip XPA 3233
Wo stehen wir? Das Gleitkommaformat Auswege und Lösungsmöglichkeiten Auslöschung gültiger Ziffern Verletzung mathematischer Gesetze Auswege und Lösungsmöglichkeiten Optimierte Algorithmen Mehrfachlange Arithmetiken Festkommaarithmetik Skalarprodukt als neue Grundrechenart
Inhalt Intervallarithmetik Iterative Verfahren Spezielle Chips
Intervallarithmetik Wozu der ganze Aufwand?
Intervallarithmetik
Intervallarithmetik Ergebnisverifikation Wie genau ist mein Ergebnis?
Theorie a = [a1; a2]; b=[b1; b2] a+b = [(a1+b1); D(a2+b2)] Beispiel 1,075 ± 0,002 ↔ [1,073; 1,077] Addition a = [a1; a2]; b=[b1; b2] a+b = [(a1+b1); D(a2+b2)]
Rechenzeichen Standard + - x / Abrunden + - x / Aufrunden + - x / Subtraktion Division Addition Multiplikation Skalarprod. IEEE 754, 854 Standard + - x / Intervallarithmetik Abrunden + - x / Aufrunden + - x /
Praxis Spezielle Programmiersprachen Spezielle Chips Pascal-XSC Extended Scientific Computing C-XSC Class Library für C++ Fortran-XSC Spezielle Chips XPA 3233
Praxis - Polynomaddition Standard-Pascal Berechnung z=a+b+c procedure add(a, b: Poly; var c: Poly); begin ... end add(a, b, z); add(c, z, z);
Praxis - Polynomaddition Pascal-XSC Berechnung z=a+b+c . . z:=a+b+c;
Nachteile Umschalten zwischen Auf- und Abrunden Überschätzung der Intervallgrößen
Inhalt Intervallarithmetik Iterative Verfahren Spezielle Chips
Newtonverfahren Klassisch Tangente xneu = x - f(x) / f‘(x) x xneu f
Newtonverfahren Mit Intervallarithmetik X2 = m1 - f(m1) / f‘(X1) Tangenten X2 m1 X1 f
Inhalt Intervallarithmetik Iterative Verfahren Spezielle Chips
XPA 3233 - System-Struktur
XPA 3233 - Daten Entwickelt an der Uni Karlsruhe, Uni Stuttgart und TU Hamburg Harburg VHDL und Compass CMOS 8µm VLSI-Technologie 33 MHz 207.000 Transistoren 6 Mflops Maximalleistung
XPA 3233 - Architektur Komm. mit dem Prozessor Operanden/ Ergebnis 53x53106 Bit Verschieben/ Runden Ergebnis Zusammen-führen
XPA 3233 - Floorplan
XPA 3233 - Foto
Vielen Dank für die Aufmerksamkeit !