Wurzelziehen mit Floating Point Operationen, GdI 3

Transcription

Wurzelziehen mit Floating Point Operationen, GdI 3
Prof. Frederik Armknecht
Sascha Müller
Daniel Mäurer
Grundlagen der Informatik 3
Wintersemester 09/10
Praktikum 2
Wurzelziehen mit Floating Point Operationen
Floating Point Operationen in MIPS
Zusätzlich zu den bisher bekannten Operationen kann man mit MIPS auch Gleitkomma
Operationen durchführen. Diese werden auf einem separaten Koprozessor(FPA) durchgeführt. Der Koprozessor hat seine eigenen Register f 0 − f 31 und unterstützt einfache und
doppelte Genauigkeit. Doppelt genaue Gleitkommazahlen (64Bit) werden immer in zwei
aufeinanderfolgenden Registern gespeichert.
Heron-Verfahren
Eine einfaches iteratives Verfahren zur Berechnung der Quadratwurzel einer Zahl bietet
das bereits von den Babyloniern verwendetet Heron-Verfahren. Es eignet sich gut zur implementierung auf Hardware-nahen Systemen, da nur Grundrechenarten benötigt werden.
Die Iterationsvorschrift lautet:
1
x
y i +1 = · y i +
2
yi
Der Startwert y0 muss ungleich 0 sein, kann ansonsten aber beliebig gewählt werden. Ein
negativer Startwert führt zur Berechnung der negativen Wurzel.
Wurzelberechnung von Ganzzahlen
Die interne Zahlendarstellung wird bei der Wurzelberechnung durch binäre Suche ausgenutzt. Im Suchschritt wird für jedes Bit der Lösung einzeln berechnet. Da man bei einer
32bit-Zahl weiß, dass die Lösung maximal 216 ist. Das Verfahren berechnet nun alle binären
Ziffern bi der Lösung:
n
y=
∑ 2 i · bi
i =0
Vom höchstwertigen Bit b15 absteigend wird entschieden, ob die Lösung
sich im Halbraum
√
0 ≤ y < 215 oder 215 ≤ y < 216 die Wurzel liegt. Wenn 215 < x bzw (215 )2 < x dann
hat bi den Wert 1,√ansonsten 0. Für das nächst niedrigere Bit b14 entscheidet man nun, ob
215 · b15 + 214 < x und setzt es entsprechend auf 0 oder 1. Man erhält so iterativ eine
genauere Näherung yi für die Wurzel von x:
yi = 215 · bi + 214 · b14 + . . . + 2i · bi
√
y0 ist damit der abgeschnittene ganzzahlige Anteil von x. Verwendet man statt yi 2 < x
nun yi · (yi − 1) < x erhält man den gerundeten Wert.
1
Wurzelziehen mit Floating Point Operationen
IT-Sicherheit, SS 09
Wurzeln von Gleitkommazahlen
Das oben vorgestellte Verfahren zur näherungsweisen Wurzelberechnung mittels binärer
Suche lässt sich einfach auf Gleitkommazahlen erweitern, indem man Mantisse und Exponent getrennt betrachtet:
√
√
√
X = Mantisse · 22e = Mantisse · 2e
Man berechnet also die Wurzel der Mantisse und halbiert den Exponenten (bei ungeraden
Exponenten muss der Exponent um eins verkleinert und die Mantisse verdoppelt werden).
Die Mantisse des Wurzel lässt sich mit oben beschriebenem Algorithmus bestimmen, indem
man die Mantissenwerte als Integerzahlen auffasst. Das bedeutet eine Linksverschiebung
um s Nachkommastellen, also eine Multiplikation mit 2s (beim Quadrat folglich 2s Stellen
Verschiebung):
√
√
2s · y = 2s · x = 22s · x
Man kann also die einzelnen Lösungsbestandteile bi iterativ mit folgender Bedingung berechnen:
1 falls 2s · yi · (2s · yi − 1) < 22s · x
bi =
0 sonst
Aufgabenstellung
Implementieren Sie beide vorgestellte Verfahren in MIPS. Fertigen sie dazu ein MIPS-Programm
mit den Unterprogrammen heron und binarysearch, das eine positive doppelt genaue Gleitkommazahl einliest und als Ergebnis die Quadratwurzel als doppelt genaue Gleitkommazahl ausgibt. Versehen Sie ihren Code mit ausführlichen Kommentaren. Fehlende oder besonders schlechte Kommentare können zum nicht Bestehen des Testats führen.
Tipps und Tricks
• Überlegen Sie sich beim Heron-Verfahren sinnvolle Startwerte und ein geeignetes Abbruchkriterium.
• Überlegen Sie, welche Berechnungen auf dem Koprozessor gerechnet werden müssen
und welche nicht.
• Beachten Sie, dass eine doppelt genaue Gleitkommazahl in zwei aufeinander folgenden Registern abgespeichert wird.
Einreichen und Testieren
Finaler Abgabetermin ist der 29.11.2009 um 23:59 Uhr. Die Abgabe erfolgt durch einen der
Gruppenteilnehmer im Moodle.
http://moodle.tu-darmstadt.de/
Machen sie mit Ihrem Tutor einen Termin für das Testat aus. Nutzen Sie für weitere Fragen
das Fachschaftsforum und die Sprechstunden.
Viel Erfolg!
2