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