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
}
}
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
}
}