In der Mathematik Ausbildung liefern CORDIC Algorithmen
Document Sample


Global Journal on Engineering Education 2004 UICEE
CORDIC-Algorithmen verbinden Mathematik, Computer-Architektur und
Anwendungen
Thomas Risse
Institut für Informatik & Automation, Hochschule Bremen
Bremen, Germany
ABSTRACT: Lehren und Lernen soll aktuell, Anwendungsbezogen, explorativ, Praxisnah und Problem-orientiert sein, – auch und
besonders in Mathematik. CORDIC-Algorithmen werten effizient die elementaren trigonometrischen und hyperbolischen Funktionen
aus. Sie stellen damit einen, im Übrigen vernachlässigten Themen-Bereich dar, der die obigen wünschenswerten Eigenschaften in
hohem Maß aufweist.
Denn CORDIC-Algorithmen erlauben, eine Vielzahl von Problemen etwa der Signalverarbeitung durch exemplarische
Implementierungen zu lösen. CORDIC-Algorithmen sind somit in beispielhafter Weise geeignet, Mathematik, Computer-Architektur
mit im weitesten Sinn Signalverarbeitung und damit eben allgemein Grundlagen, Implementierung und Anwendung zu verbinden.
1 Einführung
Taylor-Polynome werden traditionell als das erste und häufig
alleinige Mittel der Wahl dargestellt, elementare Funktionen 2 Tradition
auszuwerten. Dabei zeigen schon einfachste, ältere Taschen- Ausgangspunkt ist die Frage, wie man effizient beispielsweise
rechner, dass Potenzreihen-Entwicklung eher nicht Methode exp(π), sin(1/3), arctan(1/7), cosh(0.7), sqrt(e) usw. usf.
dieser Berechnungen sein kann. Eigenschaften von Intel x86 berechnet. >>> elementare Funktionen
(Co-) Prozessoren deuten in dieselbe Richtung. Die vermutlich typische, übliche wie gängige Antwort lautet
Grund genug, sich mit CORDIC-Algorithmen zu befassen. per Polynom-Approximation (Potenz-, Taylor-Reihe)
Diese erlauben, die elementaren trigonometrischen und hyper- >>> polynomiale Approximation
bolischen Funktionen und deren Inverse effizient auszuwerten. per look up table mit etwa linearer Interpolation, was
Dabei werden Überlegung zu Konvergenz, Effizienz, Zulässig- immerhin das Prinzip "trading space for time" klas-
keit, Genauigkeit usw. notwendig. sisch illustriert. >>> look up table >>> lineare
Sollen CORDIC-Algorithmen implementiert werden, sind eine Interpolation
Reihe von Entwurfsentscheidungen zu treffen, die diverse Kri- Selbstverständlich gibt es weitere Verfahren wie etwa
terien wie Geschwindigkeit, Genauigkeit, Chip-Fläche, Strom- das Newton (-Raphson) – natürlich nur für Funktionen
verbrauch oder auch Fehler-Toleranz mehr oder weniger gut ähnlich dem Beispiel sqrt(e) >>> Newton-Raphson
bedienen. Verfahren
CORDIC-Algorithmen spielen in vielen Anwendungen eine die Fourier-Approximation (Fourier-Reihe) – natürlich
entscheidende Rolle, wie Beispiele aus etwa Signalverarbei- nur für periodische Funktionen >>> Fourier-
tung, generativer Computer-Graphik oder Bildverarbeitung Approximation
belegen.
Eine derartige ganzheitliche Betrachtung von CORDIC-
Algorithmen bietet die Chance, Mathematik – und damit
2.1 Beispiele für diese Tradition in der
Theorie –, Implementierung – und damit Computer-Architektur Literatur
– und etwa Signalverarbeitung – und damit Anwendungen – zu Einige beispielhafte Zitate aus gängigen, einschlägigen Lehr-
verbinden. büchern untermauern diese traditionelle Praxis.
In der Mathematik-Ausbildung liefern CORDIC-Algorithmen
vielfältige Beispiele etwa für elementare Funktionen, Appro- [Hartmann] [28] S.254 Der Taschenrechner macht
ximation, Konvergenz, Numerik oder Algorithmik und nichts anderes, als die ersten Glieder von
Komplexität. 1+x+x2/2!+…+xn/n!+… auszuwerten.
Diese Bezüge zur Mathematik-Ausbildung werden im Folgen- [Papula] [29] Band 1, S.449 Näherungsweise
den jeweils durch >>>Stichwort aufgezeigt. Berechnung von Funktionswerten …
1
[Stingl] [31] S.309 Per Taylor-Polynom kann man Seit 1980 implementiert der 8087, der mathematische
den Wert beliebiger Funktionen näherungsweise, nur Coprozessor des 8086, in Hardware eine Reihe von
mit Hilfe der Grundrechnungsarten berechnen. Konstanten, trigonometrischen und logarithmischen
[Stöcker] [30] Band 2, S.211 Unter der Verwendung Funktionen, die zusammen mit ihrer Ausführungszeit
von Potenzreihen kann die Berechnung von (cycles) [37], [36], [38] für alle Mitglieder der x86-
Funktionswerten auf einfache Weise erfolgen … Prozessor-Familie aufgelistet seien:
[Brauch/Dreyer/Haacke] [26] S.396 Reihen von
Zahlen werden i.A. dazu benutzt, Funktionswerte von Instruktio
Funktion 8087 80287 80387 80486 80586
n
transzendenten Funktionen zu berechnen. Zur Berech- 17–
nung des Sinus eines Winkels mit dem Taschenrechner 250– 250– 314– 218–
Arctan FPATAN1 173
800 800 487 303
…
[Burg/Haf/Wille] [27] Band I, S.417 Durch Partial- 30– 30– 191– 200–
17–
Tan FPTAN2 173
summen der Potenzreihen sind Polynome gegeben, die 540 540 497 273
die Funktionen mehr oder weniger gut approximieren 180– 180– 122– 70
sqrt(x) FSQRT 83–87
und daher zur numerischen Berechnung 186 186 129
herangezogen werden können. Es folgt immerhin der 900– 900– 120– 196–
22–
Verweis auf Bernstein-Polynome, Tschebyscheff- y*log_2(x) FYL2X 111
1100 1100 538 329
Polynome und B-Spline-Approximation. 22–
700– 700– 257– 171–
y*log_2(x+1) FYL2XP1 103
1100 1100 547 326
Alle Autoren behandeln selbstverständlich Potenz- und Fourier-
Reihen, jedoch behandelt keiner der genannten Autoren
CORDIC-Algorithmen. Dabei sind diese alles andere als FPATAN und FPTAN sind im Intel-Jargon
unwichtig: sogenannte 'partielle' Funktionen: FPATAN berechnet
arctan für den Quotienten zweier Argumente und
FPTAN berechnet zugleich sin und cos. Das Ergebnis
2.2 Bedeutung der Fragestellung tan liefert erst eine zusätzliche Division.
seit 1985 sind im 80386 und seinen Nachfolgern als
Sicherlich fallen einem jeden mannigfache Situationen ein, in zusätzliche Funktionen sin und cos explizit implemen-
denen die Auswertung elementarer Funktionen unverzichtbar tiert [37], [36]; [38]:
ist.
Funktio Instruktio
sin(x) und cos(x) beispielsweise für Rotationen der n n
8087 80287 80387 80486 80586
generativen Computer Graphik, Roboter-Steuerung, cos FCOS3
123– 257–
18–124
Sinus-Generatoren, Fourier-Transformation und ihre 772 354
122– 257–
mannigfachen Abkömmlinge usw. sin FSIN
771 354
16–126
arctan(x) beispielsweise für Überführung Cartesischer sin und 194– 292–
FSINCOS 17–137
Koordinaten in Polar-Koordinaten usw. cos 809 365
sqrt(x) beispielsweise für Abstände von Punkten, für
das Normieren von Vektoren usw. Dies bestätigt die Intel-Aussage [33] zu FSINCOS:
exp(x) beispielsweise für Wachstums- oder Abkling- This instruction is faster than executing the FSIN and
Vorgänge, für Normalverteilung, Ausfallwahrschein- FCOS instructions in succession.
lichkeiten nicht alternder Bauteile, usw.
Die Indizien sind erdrückend: simple Taylor-Approximation
allein kann diesen Implementierungen nicht zugrunde liegen!
([35] zeigt, wie die Entwicklung extrem leistungsfähiger
Gleitkomma-Einheiten die Implementierungen der elementaren
2.3 Taylor-Approximation kann’s nicht
Funktionen in aktuellen Intel-Prozessoren der x86-Familie
sein! beeinflusst hat und wie kompliziert die Berechnung tatsächlich
Einige Indizien, besonders etwa bei Verwendung ist!)
leistungsschwacher Taschenrechner, lassen vermuten, dass die
Taylor-Approximation vielen Anwendungen gerade nicht
zugrunde liegen kann.
Vermittels Taylor-Approximation dauert die Auswer-
tung beispielsweise des Logarithmus wesentlich länger
als die Auswertung der Exponential-Funktion. >>>
Konvergenz-Geschwindigkeit
1
Die Konvergenz-Geschwindigkeit der Taylor-Appro- FPATAN: arg=Y/X mit 8087/80287: 0 ≤ Y < X < ∞.
2
ximation hängt stark vom Argument ab! >>> FPTAN: 0 ≤ arg ≤ π/4 auf 8087/287, berechnet Y=sin(arg)
Konvergenz-Geschwindigkeit und X=cos(arg). Zusätzliche Division liefert das Ergebnis Y/X.
80387: falls |arg|>π/4 bis zu 76 zusätzliche cycles, 80487: falls
Weitere Indizien liefern die Prozessoren der Intel x86-Familie. |arg|> π/4 zusätzlich arg/(π/4) cycles.
3
FCOS, FSIN, FSINCOS: 80387: falls |arg|>π/4 bis zu 76 zu-
sätzliche cycles, 80487: falls |arg|>π/4 zusätzlich arg/(π/4)
cycles.
2
2.4 Taylor-Approximation vs CORDIC 3.1 CORDIC-Rotationen
Die Unterschiede von Taylor-Approximation und CORDIC-
Algorithmen seien am Beispiel der Berechnung von cos(1.45)
illustriert. (Fehler aufgrund Rundung des Argumentes werden
hier nicht betrachtet.)
[Taylor] Approximiere cos(x) durch 1-x2/2!+x4/4!-
+…+ (-1) n x2n/((2n)!).
Die Reihe wird eben durch das Taylor-Polynom für
festes Argument approximiert.
Fehler entstehen aufgrund des Abbrechens der Taylor- Wählt man nun |φi|=arctan(2-i), dann besteht eine CORDIC-
Reihe und der Arithmetik bei der Auswertung des Rotation
Taylor-Polynoms.
[CORDIC] Volder [1] entdeckte 1959 (!) den
COordinate Rotation DIgital Computer, CORDIC, der aus zwei SHIFTs und zwei ADDs. CORDIC-Rotationen sind
trigonometrische Funktionen auswertet und den also mit minimalem (hardware-) Aufwand durchzuführen.
Walther [2] 1971 zur Auswertung beliebiger elemen- CORDIC-Rotationen beinhalten allerdings eine implizite
tarer Funktionen verallgemeinerte. Skalierung, die durch Multiplikation mit geeigneten Faktoren
Approximation des Funktionswertes durch ausgeglichen werden muss, nämlich bei Prä- oder Post-
Approximation des Argumentes. Skalierung per Multiplikation mit
Unterstellt, dass die transzendente Funktion cos(x) für
bestimmte Argumente korrekt berechnet werden kann,
entstehen so Fehler aufgrund dieser Approximation
des Argumentes und der Arithmetik bei der >>>Norm-erhaltende Transformation
Auswertung von cos(x).
Die folgende Figur zeigt den Unterschied der Berechnung von 3.2 CORDIC-Algorithmus (rotation,
cos(1.45), auf der einen Seite per Taylor-Approximation und forward)
auf der anderen Seite per CORDIC-Algorithmus.
CORDIC-Algorithmen operieren auf Tripeln (xi,yi,zi)
Wie beispielsweise sin 30° bzw. cos 30° approximiert wird,
zeigt die folgende Graphik.
3 CORDIC
CORDIC-Algorithmen berechnen etwa die trigonometrischen
Funktionen sin(x) oder cos(x) gemeinsam4.
In komplexer Schreibweise gilt
cos φ+j sin φ = exp(j φ) = exp(j φn-1) exp(j φn-2)…exp(j φ1) exp(j φo)
falls φ = φn-1+φn-2+…+φ1+φo.
oder eben vektoriell geschrieben – wobei hier φo=0 gesetzt sei
Numerische Experimente mit CORDIC-Algorithmen erlaubt im
Übrigen auch das interaktive Dokument [25]. Hier operiert der
CORDIC im sogenannten circulären Modus und zwar in der
Richtung rotation oder forward, vgl. [4].
Noch ist nichts gewonnen, außer dass die Auswertung von
cos(φ) und sin(φ) auf eine Rotation oder mehrere Rotationen
zurückgeführt wurde: 3.3 CORDIC-Konvergenz & -Konvergenz-
Bereich
Konvergenz der CORDIC-Algorithmen garantiert der folgende
4
Wie fangen Mathematiker einen Löwen? Sie fangen zwei und
lassen einen wieder laufen! Satz
3
Gegeben αo ≥ α1 ≥ … ≥ αn > 0 mit αk ≥ αn+αk+1 +αk+2+…+ αn
für alle 0≤ k ≤ n. Gegeben ein reelles r mit |r| ≤ α1 +α2+…+ αn.
Definiere induktiv zi+1 = zi + αi sgn(r-zi) mit zo=0. Dann gilt:
Der 'hyperbolic CORDIC' berechnet also
Beweis durch Fallunterscheidung s. z.B. [25]
Folgerung
Gesicherte Konvergenz für alle r mit
3.8 linear CORDIC
Der CORDIC-Algorithmus im sogenannten linearen Modus
multipliziert (rotating) oder dividiert (vectoring)!
Wenn auch diese Implementierung den Standard-Implementie-
rungen [32] für Multiplizierer oder Dividierer nicht ebenbürtig
ist, bietet sie doch den Vorteil, dass ein vorhandener CORDIC
3.4 CORDIC-scaling fast ohne zusätzlichen hardware-Aufwand eben zugleich auch
Falls der Skalierungsfaktor K in sign-digit-representation K=κ0 Multiplikationen und Divisionen ausführen kann – eine
20 + κ1 2-1 +…+ κn 2-n mit κi = ±1 gegeben ist, so lässt sich auch attraktive Variante dann, wenn man durch Einsparen
die Skalierung nur mit SHIFTs und ADDs durchführen. zusätzlicher funktionaler Einheiten etwa die Verlustleitung
Darüber hinaus gibt es alternative Herangehensweisen, vgl. z.B. reduzieren kann.
[21].
3.9 CORDIC Funktionalität
3.5 CORDIC-vectoring (vectoring, Die Funktionalität von CORDIC-Implementierungen sei hier
backward) zusammengestellt:
Der CORDIC-Algorithmus operiert im sogenannten circulären
Modus auch in der entgegen gesetzten Richtung vectoring oder
backward, vgl. [4].
Um φ = arcsin(arg) oder arccos(arg) = π/2-arcsin(arg) zu
berechnen, wird der Einheitsvektor ex rotiert, bis die y-Koordi-
nate des gedrehten Vektors mit arg übereinstimmt: yi → arg
Die CORDIC-Algorithmen in den drei Modi stehen in Form
von interaktiven Dokumenten [25] zum Ausprobieren zur
Verfügung.
4 Implementierungen
Eine Implementierung ist immer im Licht bestimmter
Anwendungen und bestimmter Entwurfsziele wie
3.6 Koordinaten-Transformationen Geschwindigkeit
Offensichtlich lassen sich mit CORDIC-Algorithmen im effiziente Speicher-Nutzung
circulären Modus Polar- in Cartesische Koordinaten und Genauigkeit [5]
umgekehrt umrechnen. geringe Verlustleistung [8], [11], [14], [22]
Fehler-Toleranz [KwakPS00]
zu bewerten. Beispiele für verschiedene CORDIC-
Architekturen mögen dies illustrieren.
3.7 hyperbolic CORDIC building blocks
Die enge Beziehung zwischen den trigonometrischen und den o [SHIFT] switches, barrel shifters
hyperbolischen Funktionen legt den hyperbolischen Modus des o [ADD/SUB] ripple-carry-, carry-save-, carry-
CORDIC nahe. >>>hyperbolische Additionstheoreme look-ahead-, conditional sum-, limited-size
carry-look-ahead-, … adders
o [scaling] pre-, post-scaling
4
o [Architecture] fix → float, sign digit, pipelined CORDIC, DCT, Wavelets, [7], [12], [18],
pipeline, processor array, systolic array [21]
basic circuit Raster-Bilder in real time drehen (parallele Rotation
von 8x8 pixel-Blöcken) [6]
preprocessing, d.h. Normalisieren per Rotation,
Skalierung für Handschriften-Erkennung etwa auf
PDAs [13]
Motion Estimation statt per block matching per
matching in DCT domain [10]
Motion Estimation per Hough Transformation
pipeline (Strecken der polygonalen Kontour in Hesse'scher
Normalform) [9], für Video-Coding wie MPEG,
H.261, H.263 [19]
6 Empfehlungen für die Technische
Informatik
Das Gesagte legt nahe, CORDIC-Algorithmen – ihrer
Bedeutung entsprechend – in
Mathematik (Additionstheoreme, Geometrie, Konver-
genz, Algorithmik, Komplexität, Fehler-Analyse)
Rechner-Strukturen/Computer-Architektur (Fest-
komma- vs Gleitkomma-Arithmetik, sign-digit-
tree (DFT)
representation, Speicher-Effizienz, pipelining,
Parallelisierung)
generative Computer Graphik, imaging, Signal-
verarbeitung etc.
zu berücksichtigen, um so Anwendungsbezogenes, Fächer-
übergreifendes Lehren und Lernen zu stärken.
Weiterentwicklungen weisen in verschiedene Richtungen: Naturgemäß sind die angestellten Überlegungen in erster Linie
einschlägig nur für die Technische Informatik. Andere
verbessertes pipelining durch 'schnelleres Vorzeichen' ingenieurwissenschaftliche Studiengänge haben sicher ihre
(sign-digit & adder) eigenen Algorithmen, die in exemplarischer Weise die Pole
weniger Iterationen, d.h. schnellere Konvergenz durch Theorie und Praxis, Grundlagen und Anwendung verbinden.
adaptives Inkrementieren
verringerter Chip-Fläche z.B. durch hierarchische Tendenziell schwächere Vorkenntnisse der Studienanfänger
barrel shifter gerade in Mathematik, tendenziell verkürzte Studienzeiten und
Verallgemeinerung durch Integration der drei Modi: tendenziell weiter modularisierte Studiengänge, die
circular, linear, hyperbolisch integrierendes, Fächer-übergreifendes, interdisziplinäres
Flexibilität durch Programmierbarkeit/ISA, [23] Lehren und Lernen erschweren, stehen solchen Wünschen,
weitere Erhöhung der Geschwindigkeit durch diese Pole zu verbinden, allerdings grundsätzlich entgegen.
Parallelisierung, z.B. MMX [16] oder SSE [34]
5 Anwendungsbeispiele 7 einige Referenzen
Unter den unzähligen Anwendungen von CORDIC-Algorith- Im Folgenden sind einige ausgewählte Referenzen zu
men seien einige exemplarische aufgelistet. CORDIC-Algorithmen aus [24] chronologisch aufgelistet, u.a.
Roboter-Steuerung: (inverse) Kinematik und Dynamik die beiden seminal papers [1], [2]
[3] Überblicksartikel, z.B. [4]
Transformationen in der generative Computer- Genauigkeit von CORDIC-Algorithmen, z.B. [5]
Graphik, z.B. 2D, 3D Rotation, Normalisierung, 3D- Implementierungen, z.B. pipeline, processor array,
Graphik und Animationen [17] systolic arrays
spherical vector interpolation für Phong shading bei viele Anwendungen
Berücksichtigung des level of detail/HVS, gesteuert Reduktion der Verlustleistung, z.B. [8], [11], [14],
durch die Anzahl der CORDIC-Interationen [20] [22]
{Xn: 0≤ n< N} → {Yk=Xoe–j2π 0 k/N + X1e–j2π 1 k/N + X2e– Einsatz in Gewährleistungsarchitekturen, etwa für
j2π2k/N
+ … + Xne–j2π n k/N: 0≤ k< N }, DFT per Fehler-Toleranz, z.B. [15]
5
CORDIC Processor; Int. Symposium on Defect and
gefolgt von Lehrbüchern der Mathematik und einigen wenigen Fault Tolerance in VLSI Systems, DFT 2000, October
Referenzen auf papers zu Aspekten der Computer-Architektur. 2000, Yamanashi, Japan, IEEE 2000, 164–172
16. J. Villalba, J. Hormigo, M. A. González, E. L. Zapata:
1. Jack E. Volder: The CORDIC Trigonometric MMX-like Architecture Extension to Support the
Computing Technique; IRE Trans. Electronic Rotation Operation; IEEE Int. Conf. on Multimedia
Computers, Vol EC-8, September 1959, pp 330–334 and Expo, ICME 2000, New York, July 30 – August
2. J. S. Walther: A Unified Algorithm for Elementary 2, IEEE 2000, Vol III, 1383–1386
Functions; Spring Joint Computer Conference 1971 pp 17. Tomás Lang, Elisardo Antelo: High-Throughput 3D
379–385 Rotations and Normalizations; 35th Asilomar Conf. on
3. C. S. G. Lee, P. R. Chang: A Maximum Pipelined Signals, Systems and Computers, November 2001,
CORDIC Architecture for Inverse Kinematic Position IEEE 2001, 846–851
Computation; IEEE J. of Robotics and Automation, 18. Wu Zhilu, Ren Guanghui, Zhao Yaqin: A Study on
Vol 3, No 5, October 1987, 445–458 Implementing Wavelet Transform and FFT with
4. Yu Hen Hu: CORDIC Based VLSI-Architectures for FPGA; IEEE 2001, 486–489
Digital Signal Processing; IEEE Signal Processing 19. Jie Chen, K. J. Ray Liu: Efficient Architecture and
Magazine, July 1992, 16–35 Design of an Embedded Video Coding Engine; IEEE
5. Yu Hen Hu: The Quantization Effects of the CORDIC Trans. on Multimedia, Vol 3, No 3, September 2001,
Algorithm; IEEE Trans. Signal Processing, Vol 40, 285–297
No 4, April 1992, 834–844 20. Jeongseon Euh, Jeevan Chittamuru, Wayne Burleson:
6. Indradeep Gosh, Bandana Majumdar: Design of an CORDIC Vector Interpolator for Power Aware 3D
Application Specific VLSI Chip for Image Rotation; Computer Graphics; IEEE Workshop on Signal
7th Int. Conf. on VLSI Design, January 1994, IEEE Processing Systems, SIPS2002, IEEE 2002, 240–245
275–278 21. Sungwook Yu, Earl E. Swartzlander Jr.: A Scaled
7. Sven Simon, Peter Rieder, Christian V.Schimpfle, DCT Architecture with the CORDIC Algorithm; IEEE
Josef A. Nossek: CORDIC Based Architectures for the Transactions on Signal Processing, January 2002, Vol
Efficient Implementation of Discrete Wavelet 50, No 1 160–167
Transforms; IEEE Int. Symposium on Circuits and http://www.ece.utexas.edu/\~sungwook/zPDF/sc.pdf
Systems, ISCAS 1996, Vol 4, 77–80 22. Milos Krstic, Alfonso Troya, Koushik Maharatna,
8. Christian V. Schimpfle, Sven Simon, Josef A. Nossek: Eckhard Grass: Optimized Low Power Synchronizer
Low Power CORDIC Implementation Using Design for the IEEE 802.11a Standard; Int. Conf. on
Redundant Number Representation; IEEE Int. Conf. Acoustics, Speech, and Signal Processing, ICASSP
Application-Specific Systems, Architectures and 2003, April 2003, Hong Kong, IEEE 2003, II-333–II-
Processors (ASAP 1997), July 1997, 154–161 336
9. Hsiang-Ling Li, Chaitali Chakrabarti: Hardware 23. Sven Simon, M. Müller, H. Gryska, A. Wortmann, S.
Design of a 2-D Motion Estimation System Based on Buch: An Instruction Set for the Efficient Imple-
the Hough-Transform; IEEE Trans. on Circuits and mentation of the CORDIC Algorithm; IEEE Int.
Systems – II: Analog and Digital Signal Processing, Symposium on Circuits and Systems, ISCAS 2004
Vol 45, No 1, January 1998, 80–95 24. Thomas Risse: CORDIC references, Hochschule
10. Jie Chen, K. J. Ray Liu: A Complete Pipelined Bremen, http://www.weblearn.hs-
Parallel CORDIC Architecture for Motion Estimation; bremen.de/risse/papers/CORDIC.doc/CORDICreferen
IEEE Trans. on Circuits and Systems – II: Analog and ces.pdf
Digital Signal Processing, Vol 45, No 6, June 1998, 25. Thomas Risse: Numerik – CORDIC-Algorithmen,
653–660 Hochschule Bremen http://www.weblearn.hs-
11. Tso Bing Juang, Shen Fu Hsiao: A Low Power and bremen.de/risse/MAI/docs/numerik.pdf bzw.
Fast CORDIC Processor for Vector Rotation; IEEE http://www.weblearn.hs-
42th Midwest Symposium on Circuits and Systems, bremen.de/risse/MAI/docs/numerics.pdf
MWSCAS 1999, August 1999, Las Cruces, 81–83 26. Wolfgang Brauch, Hans-Joachim Dreyer, Wolfhart
12. Peter Rieder, Sven Simon, Christian V. Schimpfle: Haacke: Mathematik für Ingenieure; Teubner 2003
Application Specific Efficient VLSI Architectures for 27. Klemens Burg, Herbert Haf, Friedrich Wille: Höhere
Orthogonal Single- and Multiwavelet Transform; J. Mathematik für Ingenieure; mehrbändig, Teubner
VLSI Signal Processing – Systems for Signal, Image, 1993–2002
and Video Technology, Vol 21, No 2, 77–90 (1999) 28. Peter Hartmann: Mathematik für Informatiker; Vieweg
13. Stephen McInerney, Richard B. Reilly: Hybrid 2004
Multiplier CORDIC Unit for Online Handwriting 29. Lothar Papula: Mathematik für Ingenieure;
Recognition; Int. Conf. on Acoustics, Speech, and mehrbändig, Vieweg 2001
Signal Processing, ICASSP 1999, IEEE 1999, Vol 4, 30. Horst Stöcker: Mathematik – Der Grundkurs;
1909–1912 mehrbändig, Harri Deutsch 1995–1999
14. Joe Costello, Damin-Al Khalili: Behavioural Synthesis 31. Peter Stingl: Mathematik für Fachhochschulen –
of Low Power Floating Point CORDIC Processors; Technik und Informatik; Hanser 2003
Int. Conf. on Electronics, Circuit and Systems, ICECS 32. David A. Patterson, John L. Hennessy: Computer
2000, December 2000, Lebanon, IEEE 2000, 506–509 Organisation and Design; 2nd edition, Morgan
15. Jae-Hyuck Kwak, Vincenzo Piuri, Earl E. Kaufmann, San Francisco, 1998
Schwartzlander, Jr.: Fault-Tolerant High-Performance
6
33. Intel Architecture Software Developer’s Manual –
Volume 2: Instruction Set Reference; 1997 z.B.
http://www.mit.edu/afs/sipb/contrib/doc/specs/ic/cpu/x
86/iapx-v2.pdf
34. Lars Nyland, Mark Snyder: Fast Trigonometric
Functions Using Intel's SSE2 Instructions; University
of North Carolina at Chapel Hill, Technical Report
TR03-041, 2003
ftp://ftp.cs.unc.edu/pub/publications/techreports/03-
041.pdf
35. Shane Story et al: Highly Optimized Mathematical
Functions for the Itanium Processor; Intel Developer
Forum Spring 2001,
http://cnscenter.future.co.kr/resource/rsc-
center/presentation/intel/spring2001/soss049.pdf
http://developer.intel.com/software/opensource/numeri
cs (not found)
36. Microsoft Corp.: Notes on Intel(R) Pentium(TM)
Processor; 1993
http://www.singlix.org/trdos/pentium.txt
37. Kevin M. Lillis: MASM and Intel Documentation –
Reference Guide, Chapter~5: Coprocessors; St.
Ambrose University 2000
http://web.sau.edu/LillisKevinM/csci240/masmdocs/
bzw.
http://web.sau.edu/LillisKevinM/csci240/masmdocs/re
ference/09LMARFC05.pdf
38. Karel Dudacek: 80x87 Instruction Set (x87 –
Pentium); University of West Bohemia 2002,
http://home.zcu.cz/~dudacek/SOJ/manualy/80x87set.p
df
7
Get documents about "