Nö, die Prototypen sind zB
Zitat Zitat von math.h
extern double sin(double __x) __ATTR_CONST__;
Zitat Zitat von Kaiser-F
um icht jeden einzelnen wert, von 0-360° abspeichern zu müssen, was ziemlich viel Flash kostet, will ich die werte berechnen lassen.
Die trigonometrischen Routinen und allgemein float-Arithmetik braichen auch nicht gerade wenig Flash -- und zudem auch Rechenzeit und auch RAM. Übrigens implementiert die avr-libm nur den SFmode (also float). Die Prototypen sind allerdings wie oben, so daß hin- und hergewandelt wird. Die Genauigkeit von double hat man nicht.
Zitat Zitat von Kaiser-F
Code:
x = (double) tan( ( double ) 70 );

USART_transmit( x );
Besser:
Code:
double x;
x = tan (70.0);
Du bist sicher, daß dein USART_transmit (double) das macht, was du denkst? Und daß du die richtige libm.a verwendest?
Zitat Zitat von Kaiser-F
tan70 sollte 2.47 sein. also müsste er 2 senden.
tan(70.0) ist 1.2219....