PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Keil C51: atan() liefert falschen rückgabewert??



buttwiener
01.07.2005, 14:11
Hallo!
Ich programmiere gerade einen Infinion 80C509 mit Keil µVision Umgebung(C51-Compiler).
Habe die atan()-funktion verwendet und bei den ersten Tests auch die richtigen Ergebisse erhalten. Jedoch stimmen die Ergebnisse nur in wenigen Fällen. Die falschen Ergebnisse liegen komplett ausserhalb des Wertebereichs des atan(). (pi/2 .. -pi/2)

Frage: Sind da irgendwelche Probleme bekannt?
Muss man den Wert vor Verwendung des atan() umrechnen?

Über eure Hilfe würde ich micht sehr freuen.
Bin mit meinem Latein am Ende.


P.s. hier der verwendete Code:

#include <math.h>
#include <stdio.h> /* for sprintf */

void tst_atan (void) {
float x;
float y;
char str[20];

for (x = -10.0; x <= 10.0; x += 0.1) {
y = atan (x);
sprintf (str,"ATAN(%f) = %f", x, y);
LCD(1,1,str); // display ausgabe
}
}

PicNick
01.07.2005, 14:54
Wenn jemand den gleichen Compiler verwendet, kann er dir vielleicht besser helfen.
Ich tät mal prüfen:
Sind die Werte steigend /fallend oder springt das Ergebnis rum
Mag er keine negativen Zahlen

FAQ beim Keil schauen, restriktionen nochmals nachlesen etc.