Fast ACOS - Impelementiert wie?

OP #4811365
Hallo,

ich habe eine schöne acos Implementierung gefunden, und würde mir gerne 
die Herleitung anschauen. Eine Referenz ist angegeben, aber wie finde 
ich das im Buch?

Implementierung:
http://http.developer.nvidia.com/Cg/acos.html

Buch:
http://people.math.sfu.ca/~cbm/aands/abramowitz_and_stegun.pdf

Hoffe, Ihr habt eine Idee, denn ich würde gerne nach dem Schema noch 
Cos, Sin und so realisieren.

-Michael
Gast
Seite 76ff, Polynom-Annäherungen.

Du könntest natürlich auch ne Taylor-Annäherung machen, ab 10 Termen ist 
das sehr genau. Multiplikation kann deine CPU vermutlich in Hardware.
Gast
Polynomiale Reihenentwicklungen konvergieren für die
inversen trigonometrischen Funktionen viel zu langsam.

C.O.R.D.I.C. heisst das Zauberwort.

Das steht aber nicht in Büchern aus dem Mittelalter.
Gast
(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag 
#4811650:
> Polynomiale Reihenentwicklungen konvergieren für die
> inversen trigonometrischen Funktionen viel zu langsam.
>
> C.O.R.D.I.C. heisst das Zauberwort.
>
> Das steht aber nicht in Büchern aus dem Mittelalter.

Jack E. Volder: The CORDIC Trigonometric Computing Technique. In: IRE 
Transactions on Electronic Computers. September 1959.

Neu ist das jetzt nicht.

Und in dem Nvidia Link aus dem Eingangspost sehe ich 8 Multiplikationen 
und ein paar Additionen, das ist jetzt auch nicht extrem teuer.

Wenns rasend schnell gehen muss, kann man auch weniger Polynome nehmen 
und  interpolieren oder Lookup + Interpolation.
Disagree

CORDIC ist toll für Hardware Implementierungen, weil man ohne 
Multiplikationen auskommt. Das spart Energie, Chipfläche und ist auch 
schneller weil ein kompletter CORDIC Schritt in einem Cycle ausgeführt 
werden kann.


In Software ist CORDIC fast immer langsamer als eine auf Polynome 
basierende Funktion. Ausnahmen hab ich lediglich bei CPU Architekturen 
gesehen, die spezielle Befehle für CORDIC haben. Bei einigen DSP 
Architekturen von Texas Instruments ist das z. B. der Fall.

Am schnellsten in Software wird wohl eine simple Lookup-Table mit 
Interpolation sein. Alternativ zu Taylor: Minimax Approximation. Da 
kommt man mit weniger Rechenschritten zu einem genaueren Ergebnis.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.