Wie berechnet FPU Sinus?

Wie ein Prozessor ganze Zahlen addiert oder subtrahiert weiß ich, aber wie berechnet die FPU z.B. Sinuswerte oder andere Funktionen?

Wie ein Prozessor ganze Zahlen addiert
oder subtrahiert weiß ich, aber wie
berechnet die FPU z.B. Sinuswerte oder
andere Funktionen?

Genau weiß ich es nicht, üblicherweise
aber über Reihensummen.

Beispiel:

sin (x) = x - (x^3)/3! + (x^5)/5! + …

  • (-1)^n*(x^(2n+1))/(2n+1)! + …

Man muß halt so viele n nehmen, daß das Ergebnis genau genug ist.

Gruß

Harald

Wie ein Prozessor ganze Zahlen addiert
oder subtrahiert weiß ich, aber wie
berechnet die FPU z.B. Sinuswerte oder
andere Funktionen?

Grundsätzlich gibt es für die FPU zwei Möglichkeiten:

Über eine (iterative) Näherungsformel (langsam aber (Chip-)platzsparend)

oder

über eine fest einprogrammierte Tabelle (Look-Up Table) (schnell aber benötigt viel Chipfläche)

Natürlich kann man auch eine Kombination von beiden Verfahren anwenden…

Was genau welcher Prozessor macht weiss ich aber auch nicht…

Wie ein Prozessor ganze Zahlen addiert
oder subtrahiert weiß ich, aber wie
berechnet die FPU z.B. Sinuswerte oder
andere Funktionen?

Man kann eine Funktion schreiben, die jeden beliebigen Sinus-(Cosinus)-Wert rausspuckt. Wenn man ein Paar Additionstheoreme berücksichtigt und sonst noch ein bisschen geschickt vorgeht, reicht oft eine Summe von nicht mehr als 10 Thermen.

Ich weiß auch nicht, wie das nun wirklich gemacht wird, aber ich schätze nicht, dass die gewöhnlich CPU das fest drauf hat.
Wenn Du Interesse hast, kann ich noch ein paar Infos raussuchen.

Bis dann, Jan

Hi,

der Schlüssel heißt komplexe Zahlen. Dann ist cos(x)+i sin(x)=exp(ix), und die Werte für die Vielfachen von x verhalten sich so, wie es die Formel suggeriert. Wenn man also eine Winkelfunktion berechnen will, dann bingt man den Winkel über die Periode 2Pi in das Intervall (-Pi,Pi) und sucht sich einen Wert unter 7°, dessen Vielfaches der reduyierte Winkel ist. Für diesen werte man die Potenzreihenentwicklungen aus und berechne die nötigen Potenzen als komplexe Zahl (d.h. mit den Additionstheoremen).

Übrigens hat die FPU keine seperaten Sinus und Cosinus-Befehle, sondern nur einen sincos-Befehl, also passiert wirklich etwas wie oben beschrieben.

MfG Lutz

Wie ein Prozessor ganze Zahlen addiert
oder subtrahiert weiß ich, aber wie
berechnet die FPU z.B. Sinuswerte oder
andere Funktionen?

Auch wenn die Antowrt vielleicht etwas spaet kommt … man kann sehr viel lernen, wenn man sich Libraries von den"Profis" anguckt.

Es gibt irgendwo im Internet (such mal mit Altavista oder so) eine Datei namens
„68343ffp.arc“

Die enthaelt fertige „fast-floating-point“ Algorithmen in 68000-Assembler-Code fuer diverse Floating-Point Berechnungen. Sie stammt von Motorola. Diese Routinen finden auch in FPUs Anwendung.

Schau mal rein,

Jens