PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : asin in AVR-GCC



Gottfreak
09.02.2005, 15:40
Hi
Ich verwende AVR-GCC und würde gern den ArcusSinus eines Wertes ausrechnen.
In der AVR-LIBC gibt's auch 'ne Bibliothek, in der so 'ne Funktion enthalten ist.
Bloß macht die Beschreibung für mich nicht so viel Sinn:


5.11.3.2 double asin (double x)
The asin() function computes the principal value of the arc sine of x. The returned
value is in the range [0, pi] radians. A domain error occurs for arguments not in the
range [-1, +1].

was kriege ich denn jetzt für negative Werte 'raus?
nochwas zum Thema "ausprobieren": Gibt's ne Bibliothek für AVR-GCC, die Methoden zur Verfügung stellt, mit denen man Zahlen(auch große und negative) formatiert über das UART ausgeben kann?

PicNick
09.02.2005, 16:15
Zum Formatieren von irgendwas sind "printf" und seine derivate zuständig.
Die asn frage versteh ich nicht ganz. du schmeißt irgendwas von -1 bis +1 rein und kriegst 0-Pi raus. Es gibt immer zwei Lösungen, abgesehen von genau +1 u, -1, die kriegst du genausowenig wie beim Wurzelziehen.

bluebrother
09.02.2005, 17:12
vielleicht is der Knackpunkt einfach der: die Werte sind im Bogenmaß, nicht Gradmaß.

PicNick
09.02.2005, 18:43
Meinst Du ?
aber zum Rechnen braucht er das sowieso in dieser Form.

Gottfreak
09.02.2005, 18:59
Die asn frage versteh ich nicht ganz. du schmeißt irgendwas von -1 bis +1 rein und kriegst 0-Pi raus. Es gibt immer zwei Lösungen, abgesehen von genau +1 u, -1, die kriegst du genausowenig wie beim Wurzelziehen.

Das ist genau das Problem: arcsin ist im Intervall [0;PI] nicht eindeutig definiert:
Für (0;1) gibt's mehrere Lösungen und für (-1;0) gibt's keine.
Die Sinusfunktion ist im Intervall [0;PI] ja gerade immer positiv(und wie kann es dann ein arcsin von negativen Werten in dem Intervall geben?).
Ich kenn die Funktion nur von [-1;1] auf [-Pi/2;Pi/2].


Zum Formatieren von irgendwas sind "printf" und seine derivate zuständig.

und wo find' ich die in AVR-GCC?

PicNick
09.02.2005, 19:20
printf is, glaub ich, <stdio.h> da gibts auch irgendeine extended version
type "Help" for help
asn
wenn du -1 reinwirfst, soll er dir nun - PI/2 oder 3* PI/2 auswerfen ?
Den genauen Quadranten mußt du entscheiden
Genauso wie SQR(4) : ist das +2 oder -2 ?
mfg

Gottfreak
09.02.2005, 21:13
wenn du -1 reinwirfst, soll er dir nun - PI/2 oder 3* PI/2 auswerfen ?
Den genauen Quadranten musst du entscheiden

Das ist ja meine Frage: Laut Doku sollte er weder noch ausgeben(ist ja beides nicht im angegebenen Bereich).



type "Help" for help

Wo bitte soll ich das eingeben?

Gottfreak
09.02.2005, 22:19
Ich hab' die Ergebnisse jetzt einfach mal ausgegeben und siehe da: Sie sind im Bereich [-pi/2,pi/2]. Scheint so, als sei die Funktion lediglich falsch dokumentiert.