Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Auswertung von Standardfunktionen

Ähnliche Dokumente
VHDL - CORDIC Verfahren

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Iterative Division, Quadratwurzelberechnung

Analysis I für Studierende der Ingenieurwissenschaften

5.5. UMKEHRFUNKTIONEN TRIGONOMETRISCHER FUNKTIONEN 115

TRIGONOMETRISCHE UND HYPERBOLISCHE FUNKTIONEN

T n (1) = 1 T n (cos π n )= 1. deg T n q n 1.

Numerische Ableitung

10 Differenzierbare Funktionen

3. Übung zur Analysis II

Spezielle Klassen von Funktionen

Jörg Gayler, Lubov Vassilevskaya

11.3 Komplexe Potenzreihen und weitere komplexe Funktionen

( ) Dann gilt f(x) g(x) in der Nähe von x 0, das heisst. Für den Fehler r(h) dieser Näherung erhält man unter Verwendung von ( )

Mathematische Werkzeuge für Computergrafik 2016/17. Gleitkommzahlen

Technische Universität München Zentrum Mathematik. Übungsblatt 7

Formelsammlung spezieller Funktionen

Dezimalzahlen. Analysis 1

K. Eppler, Inst. f. Num. Mathematik Übungsaufgaben. 3. Übung: Woche vom bis

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2016

Höhere Mathematik I für die Fachrichtung Informatik. Lösungsvorschläge zum 10. Übungsblatt. < 0 für alle t > 1. tan(x) tan(0) x 0

5 Numerische Mathematik

Nichtlineare Gleichungen

11.4. Lineare Differentialgleichungen höherer Ordnung

Funktionen. Kapitel Der Funktionsbegriff

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Division

8 Reelle Funktionen. 16. Januar

CORDIC-Algorithmen in der Lehre, in Mathematik, Implementation und Anwendungen

Integration. Kapitel Stammfunktionen

GRUNDLAGEN MATHEMATIK

Die Fakultät. Thomas Peters Thomas Mathe-Seiten 13. September 2003

GMA. Grundlagen Mathematik und Analysis. Nullstellen und Fixpunkte Reelle Funktionen 3. Christian Cenker Gabriele Uchida

Analysis 1 für Informatiker (An1I)

Numerische Lineare Algebra

Polynomiale Approximation. und. Taylor-Reihen

Grundlagen komplexe Zahlen. natürliche Zahlen

Lösungsvorschlag zur Modulprüfung Numerische Methoden Sommersemester 2016

3 Numerisches Rechnen

Beispiel. Die Reihe ( 1) k k + 1 xk+1 für 1 < x < 1 konvergiert auch für x = +1. Somit ist nach dem Abelschen Grenzwertsatz insbesondere die Gleichung

Analysis I. Vorlesung 27. Stammfunktionen zu rationalen Funktionen in der Exponentialfunktion

Konvergenz und Stetigkeit

Analysis I. 6. Beispielklausur mit Lösungen

Numerische Verfahren und Grundlagen der Analysis

Mathematik 1 für Naturwissenschaften

Freie Universität Berlin Wintersemester 11/12 Fachbereich Mathematik und Informatik Institut für Mathematik Dr. A. Linke

Maclaurinsche Reihe 1-E1. Ma 2 Lubov Vassilevskaya

Musterlösungen zu Blatt 14

Einheitsmatrix E = , Nullmatrix O = c c Diagonalmatrix diag(c 1, c 2,..., c n ) = Rang

Übungen Ingenieurmathematik

18 Höhere Ableitungen und Taylorformel

Grundkurs Mathematik II

Lösung zu Serie 2. D-ERDW, D-HEST, D-USYS Dr. Ana Cannas. Mathematik II FS März 2016

27 Taylor-Formel und Taylor-Entwicklungen

Newton-Verfahren für ein Skalarfunktion

Mathematik n 1

7. Übungs-/Wiederholungsblatt zu Einführung in die Numerik (SS 2012)

3.1.3 Newtonsche Interpolationsformel / Dividierte Differenzen

Zuerst soll untersucht werden, wie die Koeffizienten einer Polynomfunktion mit ihren Ableitungen zusammenhängen. +Q 1/ cccccccccccccccccccc. folgt.

Addition, Subtraktion und Multiplikation von komplexen Zahlen z 1 = (a 1, b 1 ) und z 2 = (a 2, b 2 ):

5 Randwertprobleme. y = f(t, y, y ) für t J, (5.2a) y(t 0 ) = y 0, y(t) = y T (5.2b) zu gegebener Funktion f und Werten y 0, y T.

13 Stetige Funktionen

1 2 x x x x x x2 + 83

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Vorzeichenlose ganze Zahlen

K3 K2 K x. plot x 2 C x K 2, x = K3..2 ;

(x x j ) R m [x] (3) x x j x k x j. R m [x]. (4)

Funktionen (Teschl/Teschl 5.2) Beispiele. Eine Funktion (oder Abbildung) f : M N,

Definition von Sinus und Cosinus

Die elementaren Funktionen (Überblick)

Die elementaren Funktionen (Überblick)

Lösungen der Aufgaben zu Kapitel 10

INGENIEURMATHEMATIK. 8. Reihen. Sommersemester Prof. Dr. Gunar Matthies

Skriptum zum Praktikum Einführung in die Mathematik 2

5 Differenzialrechnung für Funktionen einer Variablen

Die elementaren trigonometrischen Funktionen und ihre Umkehrfunktionen sind: Funktion Kurzzeichen Umkehrfunktion Kurzzeichen Sinus

2.5 Komplexe Wurzeln. Mathematik für Naturwissenschaftler I 2.5

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Fest- und Gleitkommasysteme

9 Funktionen und ihre Graphen

Differentialgleichungen. Aufgaben mit Lösungen. Jörg Gayler, Lubov Vassilevskaya

Serie 4: Flächeninhalt und Integration

lim Der Zwischenwertsatz besagt folgendes:

April (Voll-) Klausur Analysis I für Ingenieure. Rechenteil

Klausur zur Analysis I WS 01/02

8.2. Integrationsregeln

Analysis1-Klausuren in den ET-Studiengängen (Ba) ab 2007

Mathematik Übungsblatt - Lösung. b) x=2

8 Dezimalzahlen und Fehlerfortpflanzung

Fixpunkt-Iterationen

(x a) 3 + f (a) 4! x 4 4! Wir werden im Folgenden vor allem Maclaurin-Reihen betrachten, dies alles funktioniert aber auch. f (x) = sin x f (0) = 0

Übungen zu Splines Lösungen zu Übung 20

Technische Universität München Zentrum Mathematik. Übungsblatt 4

1 Grundlagen der Numerik

Rechnerarithmetik. Vorlesung im Sommersemester Eberhard Zehendner. FSU Jena. Thema: Addierschaltungen

Dierentialrechnung mit einer Veränderlichen

Numerische Verfahren und Grundlagen der Analysis

Probe-Klausur 1 Mathematik f. Bau-Ing + Chem. Modul1

Approximation durch Polynome

Brückenkurs Rechentechniken

3 Stetigkeit und Grenzwerte von Funktionen

Übungen zur Vorlesung MATHEMATIK II

1. Rechnerarithmetik und. Rundungsfehler

Skript zur Analysis 1. Kapitel 3 Stetigkeit / Grenzwerte von Funktionen

Transkript:

Rechnerarithmetik Vorlesung im Sommersemester 2008 Eberhard Zehendner FSU Jena Thema: Auswertung von Standardfunktionen Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 1 / 30

Auswertung von Standardfunktionen Neben den vier Grundoperationen +,,, / wird häufig auch die Implementierung von Standardfunktionen wie e x, ln x, sin x, cos x... gefordert. Grundlegende Techniken zur Auswertung von Standardfunktionen sind: Entnahme aus Wertetabellen oder Zusammensetzung aus tabellierten Werten. Polynomapproximation, insbesondere Taylor-Reihen oder Tschebyschew-Approximation. Rationale Approximation. Gekoppelte Rekurrenzgleichungen, insbesondere additive oder multiplikative Normalisierung, vor allem das CORDIC-Verfahren. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 2 / 30

Auswertung von Standardfunktionen: Wertetabellen Konzeptionell einfachste Methode zur Auswertung von Standardfunktionen. Interessant wegen hoher Packungsdichte von Speicherstrukturen. Tabelleninhalte leichter verifizierbar als Logikstrukturen. Vorteile hinsichtlich Robustheit, Flexibilität und Time-to-Market. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 3 / 30

Wertetabellen: Direkter versus indirekter Zugriff Für direkten Tabellenzugriff werden Werte einer Funktion f (x 1, x 2,..., x k ) für alle interessierenden Argumente (u. a. bestimmt durch die Darstellungsgenauigkeit) in einem Speicher abgelegt. Sind die Argumente mit m 1, m 2,..., m k Bits dargestellt, so ergibt sich ein l-bit-funktionswert durch Anlegen der konkatenierten Argumente als m-bit-adresse an ein (2 m l)-bit-rom, k m = m i. i=1 Wegen des Aufwands kommt diese Methode nur für Zahlen geringer Genauigkeit in Frage. Bei indirektem Tabellenzugriff werden die Argumente zunächst aufbereitet, dann ein oder mehrere Tabellenzugriffe durchgeführt, deren Ergebnisse schließlich zum gesuchten Funktionswert verknüpft werden. Beispiel: Berechnung von Produkten aus einer Tabelle von Quadraten: x y = (x + y)2 (x y) 2 4 Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 4 / 30

Interpolation von Tabellenwerten Lineare Interpolation: f (x) f (y) + (x y) [f (z) f (y)] z y Zur Steigerung der Genauigkeit auch f (x) g(y) + für alle x [y, z] (x y) [g(z) g(y)] z y Für eine effiziente Implementierung werden als Stützstellen all diejenigen Zahlen aus dem interessierenden Bereich gewählt, deren r niederwertigste Ziffern Null sind. Außer der linearen Interpolation wird gelegentlich auch quadratische Interpolation angewandt. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 5 / 30

Auswertung von Standardfunktionen mit kleinen Multiplizierern Die Verwendung kleiner Multiplizierer wird möglich, indem Segmente der Repräsentation eines Arguments als (kurze) eigenständige Zahlen behandelt werden. Beispiel: Berechnung von e X, wobei X = 1 + A 1 λ + A 2 λ 2 + A 3 λ 3 + A 4 λ 4 mit λ = 2 k und A i UInt 2 (k). Ercegovac et al. schlagen in IEEE Computer, Vol. 49, No. 7, folgenden Algorithmus vor: Approximiere e A mit A = A 2 λ 2 + A 3 λ 3 + A 4 λ 4 durch 1 + A + 1 2 A2 2 λ4 + A 2 A 3 λ 5 + 1 6 A3 2 λ6 Multipliziere das Ergebnis mit dem Wert von e 1+A 1λ aus einer Wertetabelle. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 6 / 30

Auswertung von Standardfunktionen: Taylor-Reihen Genügend oft differenzierbare Funktionen können prinzipiell über eine Taylor-Reihe ausgewertet werden. Taylorscher Satz: Es sei a aus dem offenen Intervall I. Besitzt die reelle Funktion f : I R auf I die Ableitungen f, f,..., f m, so gibt es zu jedem x I ein µ (0, 1) mit m 1 f (x) = f (i) (a) (x a)i i! + f m (a + µ (x a)) (x a)m m! m 1 Beispiel: f (x) = e x x i = i! + Rm(x) mit Rm(x) = eµ x x m m! Ohne Rundungsfehler konvergiert die Reihenentwicklung für alle x. Die Konvergenzgeschwindigkeit ist dabei monoton in x 1. Ob in beschränkter Genauigkeit Konvergenz eintritt, hängt von der Art der Rundung ab. Wegen Rundungsfehlern ist nicht klar, ob ein stationäres Ergebnis exakt gerundet ist. Tschebyschew-Approximation liefert im Allgemeinen bessere Resultate. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 7 / 30

Auswertung von Standardfunktionen: Rationale Approximation Rationale Approximation festen Grades ist häufig effizienter als Polynomapproximation. Beispiel: Die Funktion f (x) = 2 x mit x < 1 wird gut approximiert durch den Quotienten von Polynomen des Grades 5 mit konstanten Koeffizienten a i und b i, 2 x ((((a 5 x + a 4 ) x + a 3 ) x + a 2 ) x + a 1 ) x + a 0 ((((b 5 x + b 4 ) x + b 3 ) x + b 2 ) x + b 1 ) x + b 0 Der Aufwand im Hornerschema beträgt 10 Additionen, 10 Multiplikationen und eine Division. Daraus lässt sich zum Beispiel leicht weiter berechnen: e x = 2 x log 2 e = 2 m 2 y, wobei x log 2 e = m + y mit m Z und y < 1. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 8 / 30

Gekoppelte Rekurrenzgleichungen Ein wichtiger Ansatz zur Auswertung von Standardfunktionen basiert auf einem System gekoppelter Rekurrenzgleichungen: Jede einzelne Rekurrenzgleichung beschreibt einen iterativ in jedem Schritt des Verfahrens neu zu berechnenden Wert. Jeder Rekurrenzgleichung entspricht damit eine Folge von Zahlen. In den Rekurrenzgleichungen kommen gemeinsame Variablen (Koppelterme) vor. Wird durch spezielle Wahl der Koppelterme eine der Zahlenfolgen gegen einen vorgegebenen Grenzwert getrieben, streben die übrigen Zahlenfolgen entweder direkt gegen einen der gesuchten Funktionswerte oder gegen Zahlen, aus denen der Funktionswert leicht berechnet werden kann. Wichtige Formen von Algorithmen mit gekoppelten Rekurrenzgleichungen sind die additive Normalisierung (von speziellem Interesse ist hier das CORDIC-Verfahren) und die multiplikative Normalisierung. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 9 / 30

Auswertung der Exponentialfunktion durch additive Normalisierung Zur Auswertung der Exponentialfunktion in Festkomma-Darstellung wird ein System von Rekurrenzgleichungen mit Koppeltermen B i benutzt: X i+1 = X i ln B i Y i+1 = Y i B i Die B i werden so gewählt, dass die Folge der X i gegen 0 konvergiert: i X i+1 = X 0 ln B k 0 k=0 In der Praxis wird die Folge wegen beschränkter Genauigkeit stationär, X i = 0 für alle i m: m 1 X m = 0 X 0 = m 1 ln B i = ln m 1 B i Y m = Y 0 B i = Y 0 e X 0 Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 10 / 30

Additive Normalisierung Anforderungen an das Verfahren: Die Folge der B i soll einfach zu bestimmen sein. Die Werte ln B i sollen leicht zu berechnen sein. Die Multiplikationen Y i B i sollen einfach durchzuführen sein. Die Anzahl m der Iterationen soll höchstens linear in der Länge l von X 0 wachsen. Zur Vereinfachung der Multiplikation wird B i = 1 + s i 2 i mit s i { 1, 0, 1} gewählt: Eine Multiplikation mit B i besteht nur aus einer Verschiebung und einer Addition/Subtraktion. ln B i = ln(1 + s i 2 i ) ist abhängig von s i positiv, Null oder negativ, was zur Konvergenz von positiven bzw. negativen X i gegen 0 gebraucht wird. Die Werte von ln(1 ± 2 i ) müssen aus einer Wertetabelle bestimmt werden, da ihre wiederholte Berechnung zu viel Zeit kosten würde; hierfür wird ein (2m l)-bit ROM benötigt. Die Werte sind normalerweise einem Modus Round-to-nearest entsprechend gerundet. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 11 / 30

Additive Normalisierung: Konvergenzbereich Zur Erzielung von X 0 = m 1 ln(1 + s i 2 i ) mit s i { 1, 0, 1} muss gelten m 1 m 1 ln(1 2 i ) X 0 ln(1 + 2 i ) i=1 Für entsprechend großes m genügt 1,24 X 0 1,56; für jedes X 0 in diesem Intervall gibt es eine Folge s 0, s 1,..., s m 1, die Konvergenz von X i gegen X m = 0 garantiert. Liegt X nicht im vorgeschriebenen Bereich, transformiert man e X = 2 n e f ln 2 mit X log 2 e = n + f, n Z, 0 f < 1 und setzt X 0 = f ln 2. Wegen 0 f < 1 gilt 0 X 0 < ln 2 0,7, also X 0 im zulässigen Bereich. Allgemeine Potenzen berechnen sich über Z X = e X ln Z. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 12 / 30

Additive Normalisierung: Implementierungsdetails Für positives X 0 genügt s i {0, 1}: D i = X i ln(1 + 2 i ) (X i, Y i ) falls D i < 0 (X i+1, Y i+1 ) = (D i, Y i + Y i 2 i ) falls D i 0 Wegen ln(1 + s i 2 i ) s i 2 i si 2 2 1 2 i wird in Schritt i in der Regel das i-te Bit von X i+1 zu Null gemacht; daher funktioniert auch die vereinfachte Regel s i = Bit i von X i. Mit h = l/2 gilt ln(1 ± 2 i ) ±2 i für i h. Die abschließenden h Iterationen können daher auch simultan durchgeführt werden können: Y m = Y h+1 = Y h (1 + X h ) Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 13 / 30

Berechnung von e 0,25 mit 10-Bit-Arithmetik (Round-to-nearest) i 1 + 2 i ln(1 + 2 i ) 1 2 i ln(1 2 i ) X i Y i s i 0 10,0000000000 0,1011000110 0 0,0100000000 1,0000000000 0 1 1,1000000000 0,0110011111 0,1000000000 0,1011000110 0,0100000000 1,0000000000 0 2 1,0100000000 0,0011100100 0,1100000000 0,0100100111 0,0100000000 1,0000000000 1 3 1,0010000000 0,0001111001 0,1110000000 0,0010001001 0,0000011100 1,0100000000 0 4 1,0001000000 0,0000111110 0,1111000000 0,0001000010 0,0000011100 1,0100000000 0 5 1,0000100000 0,0000100000 0,1111100000 0,0000100001 0,0000011100 1,0100000000 0 6 1,0000010000 0,0000010000 0,1111110000 0,0000010000 0,0000011100 1,0100000000 1 7 1,0000001000 0,0000001000 0,1111111000 0,0000001000 0,0000001100 1,0100010100 1 8 1,0000000100 0,0000000100 0,1111111100 0,0000000100 0,0000000100 1,0100011110 1 9 1,0000000010 0,0000000010 0,1111111110 0,0000000010 0,0000000000 1,0100100011 0 10 1,0000000001 0,0000000001 0,1111111111 0,0000000001 0,0000000000 1,0100100011 0 11 0,0000000000 1,0100100011 Das Ergebnis Y 11 = 1,0100100011 2 1,28418 ist maximal genau bezüglich 10-Bit-Mantisse. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 14 / 30

Berechnung von Logarithmen durch multiplikative Normalisierung Zur Berechnung von Logarithmen in Festkomma-Darstellung wird ebenfalls ein System von Rekurrenzgleichungen mit Koppeltermen B i benutzt: X i+1 = X i B i Y i+1 = Y i ln B i Die B i werden so gewählt, dass die Folge der X i gegen 1 konvergiert: m 1 B i = 1 m 1 Y m = Y 0 X 0 m 1 ln B i = Y 0 ln B i = Y 0 + ln X 0 Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 15 / 30

Multiplikative Normalisierung: Implementierungsdetails Für B i = 1 + s i 2 i mit s i { 1, 0, 1} ergibt sich m 1 m 1 m 1 (1 2 i ) (1 + s i 2 i ) (1 + 2 i ) i=1 m 1 Für genügend großes m reicht 0,21 X 0 3,45 wegen 0,29 (1 + s i 2 i ) 4,77. Es kann dieselbe Wertetabelle wie für die Exponentialfunktion benutzt werden. Wie im Falle der Exponentialfunktion ist ein vereinfachtes Verfahren durch Einschränkung auf s i {0, 1} möglich: s i = 1 Bit (i + 1) von X i. Auch hier kann die Basis e in der Berechnung von Logarithmen problemlos durch eine andere Basis, z. B. 10, ersetzt werden. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 16 / 30

Berechnung von ln 0,25 in Arithmetik mit 10-Bit-Mantisse i X i Y i s i 0 0,0100000000 0,0000000000 1 1 0,1000000000-0,1011000110 1 2 0,1100000000-1,0001100101 1 3 0,1111000000-1,0101001001 0 4 0,1111000000-1,0101001001 1 5 0,1111111100-1,0110000111 0 6 0,1111111100-1,0110000111 0 7 0,1111111100-1,0110000111 0 8 0,1111111100-1,0110000111 1 9 1,0000000000-1,0110001011 0 10 1,0000000000-1,0110001011 0 11 1,0000000000-1,0110001011 Das Ergebnis Y 11 = 1,0110001011 2 1,38574 ist in Rundung zur Null maximal genau bezüglich 10-Bit-Mantisse. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 17 / 30

CORDIC-Algorithmen Im CORDIC-Verfahren (COordinate Rotate DIgital Computer) werden trigonometrische (und andere) Funktionen durch eine Folge von Koordinatentransformationen im R 3 berechnet. Das Verfahren beruht auf additiver Normalisierung und besitzt drei Varianten. In allen wird ein dreidimensionaler Vektor schrittweise solange transformiert, bis eine bestimmte der Komponenten Null geworden ist; die beiden anderen Komponenten (oder eine davon) geben dann den gesuchten Funktionswert an. Verfahren T y (Vektormodus): (x 0, y 0, z 0 ) Ty (x 1, y 1, z 1 ) Ty... Ty (x m 1, y m 1, z m 1 ) Ty (x m, 0, z m) Verfahren T z (Rotationsmodus): (x 0, y 0, z 0 ) Tz (x 1, y 1, z 1 ) Tz... Tz (x m 1, y m 1, z m 1 ) Tz (x m, y m, 0) Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 18 / 30

Das zirkuläre CORDIC-Verfahren Das zirkuläre CORDIC-Verfahren arbeitet mit folgenden gekoppelten Rekurrenzgleichungen: x i+1 = x i + y i δ i y i+1 = y i x i δ i mit δ i R, α i = arctan δ i z i+1 = z i + α i Die δ i werden dabei so gewählt, dass y i bzw. z i für i gegen Null strebt. Bei exakter Ausführung ergäbe sich x m = K (x 0 cos α + y 0 sin α) m 1 y m = K (y 0 cos α x 0 sin α) mit α = z m = z 0 + α α i, K = m 1 1 + δ 2 i Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 19 / 30

Zirkuläres CORDIC-Verfahren Für die praktische Anwendung müssen die Multiplikationen mit δ i schnell durchführbar sein. Für δ i = ±2 n i mit n i N geht dies einfach durch Rechtsverschiebung. Die Werte von α i = arctan δ i = arctan(±2 n i ) werden einer Wertetabelle entnommen. Das Vorzeichen von δ i wird so gewählt, dass sich y i bzw. z i in Richtung auf die Null zu verändert (eventuell aber auch darüber hinausschießt): mit T y : T z : δ i = sgn(x i ) sgn(y i ) 2 i δ i = sgn(z i ) 2 i { +1 falls u 0 sgn(u) = 1 falls u < 0 Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 20 / 30

Konvergenz des zirkulären CORDIC-Algorithmus im Vektormodus Die CORDIC-Algorithmen konvergieren nicht für beliebige Startwerte x 0, y 0 und z 0. Es lässt sich aber zeigen, dass T y zur Konvergenz führt, wenn gilt: m 1 λ 0 arctan(2 1 m ) + arctan(2 i ) mit λ 0 = arctan(y 0 /x 0 ) falls x 0 0 arctan(y 0 /x 0 ) + π falls x 0 < 0, y 0 0 arctan(y 0 /x 0 ) π falls x 0 < 0, y 0 < 0 Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 21 / 30

Funktionen des zirkulären CORDIC-Algorithmus im Vektormodus Im Rahmen der Rechengenauigkeit gilt dann x m = K x0 2 + y 0 2 sgn(x 0) mit y m = 0 z m = z 0 + arctan(y 0 /x 0 ) K = m 1 1 + δ 2 i = m 1 1 + 2 2i Für genügend großes m wird K 1,64676 und es hat λ 0 1,74 zu gelten. x 0 = 1 und z 0 = 0 ergeben x m = K 1 + y0 2 und zm = arctan y 0 für beliebiges y 0. Wegen arctan(1/y) = π/2 arctan y genügt eine Implementierung für y 0 1. Mit x 0 = 1 u 2, y 0 = u, z 0 = 0 ergibt sich z m = arcsin u. Mit x 0 = u, y 0 = 1 u 2, z 0 = 0 ergibt sich z m = arccos u. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 22 / 30

Konvergenz des zirkulären CORDIC-Algorithmus im Rotationsmodus Entsprechend führt T z zur Konvergenz, wenn m 1 z 0 arctan(2 1 m ) + arctan(2 i ) und im Rahmen der Rechengenauigkeit gilt mit demselben Wert von K x m = K (x 0 cos z 0 y 0 sin z 0 ) y m = K (y 0 cos z 0 + x 0 sin z 0 ) z m = 0 x 0 = 1/K und y 0 = 0 ergeben x m = cos z 0 und y m = sin z 0 für z 0 π/2. In allen anderen Fällen helfen die Regeln cos(z ± 2jπ) = cos z, cos(z π) = cos z, sin(z ± 2jπ) = sin z, sin(z π) = sin z. Mit einer ähnlichen Technik lässt sich z m = arccos c (bzw. z m = arcsin c) direkt berechnen, indem man x 0 = 0, y 0 = 1/K, z 0 = 0 setzt und x i (bzw. y i ) gegen den Wert c treibt. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 23 / 30

Hyperbolische CORDIC-Transformationen Das hyperbolische CORDIC-Verfahren benutzt die modifizierte CORDIC-Rekursion x i+1 = x i y i δ i y i+1 = y i x i δ i mit δ i ( 1, 1), α i = artanh δ i z i+1 = z i + α i Bei exakter Rechnung ergibt sich mit x m = K [x 0 cos(i α) + i y 0 sin(i α)] y m = K [y 0 cos(i α) i x 0 sin(i α)] z m = z 0 + α m 1 α = α i, K = m 1 1 + δ 2 i Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 24 / 30

Hyperbolisches CORDIC-Verfahren Die Folge der δ i ist hier aber verschieden von der des zirkulären CORDIC-Verfahrens: Um K argument-unabhängig zu machen, durchlaufen die n i in δ i = ±2 n i z. B. die Folge (1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 13, 14, 15,...), d. h. die natürlichen Zahlen, wobei die Zahlen 4, 13, 40, 121,..., k, 3 k + 1,... doppelt auftreten. Mit dieser Wahl der δ i ergibt sich K 0,82816. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 25 / 30

Vektormodus des hyperbolischen CORDIC-Verfahrens Treibt man y i gegen 0, so erhält man für y 0 < 0,81 x m = K x0 2 y 0 2 sgn(x 0) y m = 0 z m = z 0 + artanh(y 0 /x 0 ) Damit berechnet man: z m = artanh y 0 durch x 0 = 1, z 0 = 0 x m = K 1 y0 2 durch x 0 = 1 x m = K u durch x 0 = u + 1 4, y 0 = u 1 4 z m = 1 2 ln u durch x 0 = u + 1, y 0 = u 1, z 0 = 0 Argumente außerhalb des zulässigen Bereichs transformiert man mit folgender Formel: ( 2 u 2 artanh(1 2 e e ) u u) = artanh 2 + u 2 e + e ln 2 u 2 Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 26 / 30

Rotationsmodus des hyperbolischen CORDIC-Verfahrens Treibt man z i gegen 0, so erhält man für z 0 < 1,13 x m = K (x 0 cosh z 0 + y 0 sinh z 0 ) y m = K (y 0 cosh z 0 + x 0 sinh z 0 ) z m = 0 und daraus mit x 0 = 1/K und y 0 = 0 x m = cosh z 0 y m = sinh z 0 Für Argumente außerhalb des Konvergenzbereichs können die folgenden Formeln verwendet werden, die für u < ln 2 0,69 und ganzzahliges q gelten: cosh(q ln 2 + u) = 2 q 1 [cosh u + sinh u + 2 2 q (cosh u sinh u)] sinh(q ln 2 + u) = 2 q 1 [cosh u + sinh u 2 2 q (cosh u sinh u)] Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 27 / 30

Indirekt mit dem CORDIC-Verfahren berechenbare Funktionen tan u = sin u/ cos u cot u = cos u/ sin u tanh u = sinh u/ cosh u coth u = cosh u/ sinh u e u = sinh u + cosh u u t = e t ln u arcosh u = ln(u + 1 u 2 ) arsinh u = ln(u + 1 + u 2 ) Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 28 / 30

Lineare CORDIC-Transformationen Eine weitere Variante des CORDIC-Verfahrens benutzt x i+1 = x i y i+1 = y i x i δ i mit α i = δ i R z i+1 = z i + α i Bei exakter Ausführung ergäbe sich x m = x 0 y m = y 0 x 0 α mit m 1 α = α i z m = z 0 + α Treibt man y i gegen 0, erhält man z m = z 0 + y 0 /x 0. Treibt man z i gegen 0, erhält man y m = y 0 + x 0 z 0. Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 29 / 30

Geschlossene Darstellung der CORDIC-Verfahren x i+1 = x i + h y i δ i y i+1 = y i x i δ i z i+1 = z i + α i mit h { 1, 0, 1}, δ i R und arctan δ i h = 1 α i = δ i für h = 0 artanh δ i h = 1 Eberhard Zehendner (FSU Jena) Rechnerarithmetik Standardfunktionen 30 / 30