Reale und Robuste Implementierung Geometrischer Algorithmen SS09 Übungsblatt 2: Thema Floating Point und Expansionen Besprechung am 19.5.2009 Universität Bonn, Institut für Informatik I Dr. Elmar Langetepe Aufgabe 1: Guard Digit bei Subtraktion (Aufgabenteil b) In der Vorlesung wurde eine Fehlerabschätzung für die Subtraktion von FloatingPoint-Zahlen durchgeführt. a) Lemma 9.9 sagt aus, dass der relative Fehler bei einer normalen Subtraktionsberechnung den Wert β − 1 erreichen kann, wobei β die Basis des FloatingPoint-Systems bezeichnet. An der wievielten Stelle des Ergebnisses kann dabei der erste Fehler auftreten? b) Zum Ausbessern dieses verheerenden Ergebnisses kann man ein so genanntes Guard-Bit benutzen. Theorem 9.10 sagt dann, dass der relative Fehler der Subtraktion kleiner als 2ε ist. Geben Sie ein Beispiel für β = 2 an, bei dem die Subtraktion mit einem Guard-Bit zu einem relativen Fehler führt, der größer als ε ist! Können Sie Beispiele finden, mit denen man beliebig nah an den größtmöglichen relativen Fehler von 2ε heran kommt? Aufgabe 2: Vergleich verschiedener Berechnungsmöglichkeiten Wenn man mit Fließkomma-Arithmetik (mit Guard-Bit) für bestimmte Werte x, y den Wert f (x, y) := x2 − y 2 berechnen möchte, welche Berechnungsvorschrift ist dann besser: (x + y)(x − y) oder (x · x) − (y · y)? Warum? Diskutieren Sie Vor- und Nachteile der Berechnungen anhand von Beispielwerten! Aufgabe 3: Konvertierung von Fließkommazahlen Theorem 9.11 sagt aus, dass man nicht für jede binäre 24-Bit Fließkommazahl den Originalwert zurück erhält, wenn man sie zunächst in die nächstgelegene DezimalFließkommazahl mit Präzision 8 wandelt und anschließend in die nächstgelegene binäre 24-Bit Fließkommazahl zurück konvertiert. Zeigen Sie dies an einem konkreten Beispiel! Zeigen Sie am gleichen Beispiel, dass die gleiche Prozedur bei Wandlung in eine 9-stellige Dezimal-Fließkommazahl funktioniert! 1 Aufgabe 4: FastTwo-Sum für Dezimalzahlen Der Algorithmus Fast-Two-Sum erzeugt, wie in der Vorlesung bewiesen, aus zwei Fließkommazahlen a, b mit Präzision p und Basis β = 2 unter der Bedingung |a| > |b| eine absteigend sortierte, nicht-überlappende Expansion x, y mit a + b = x + y. Beachten Sie dabei, dass Addition und Subtraktion durch Rundung (Round-ToNearest mit Tie-Breaking-Rule Round-to-Even1 ) der exakten Ergebnisse simuliert werden. a) Was ergibt der Algorithmus für die Binärzahlen a = −10100 und b = 101, wenn mit Basis β = 2 und Präzision p = 3 gerechnet wird? Gelten in diesem Beispiel die Aussagen x a = x − a und b bv = b − bv ? b) Welches Ergebnis würde der Algorithmus für die Dezimalzahlen a = b = 9999 berechnen, wenn immer mit Basis β = 10 und Präzision p = 4 gerechnet wird? Gelten in diesem Beispiel die Aussagen x a = x − a und b bv = b − bv ? c) An welcher Stelle lässt sich der Beweis von Theorem 9.18 nicht auf β = 10 übertragen? Aufgabe 5: Beweistechnik Seien a, b p-bit Floating Point Zahlen für β = 2 und sei a ⊕ b = a + b + err(a ⊕ b). a) Zeigen Sie: Falls |err(a ⊕ b)| ≥ 2i für ein i ∈ ZZ, dann gilt: |a ? b| ≥ 2i (2p + 1). b) Zeigen Sie: Falls |err(a ⊕ b)| > 2i für ein i ∈ ZZ, dann gilt: |a ? b| > 2i (2p+1 + 1). 1 Das bedeutet, dass immer zum nächsten darstellbaren Wert gerundet wird. Ist die Entscheidung nach dieser Regel nicht eindeutig, so wird betragsmäßig so gerundet, dass die letzte Stelle eine gerade Zahl ergibt. 2