konkret Umstellung auf eine hochgenaue FloatingPoint-Berechnung.
Die Standardmäßigen LIBs in C bieten aber auch mit long nicht die
benötigte Auflösung um es automatisch, also ohne Code-Umschreiben zu
konvertieren.
Welcher uC soll das sein, der kein float bzw. double im (Gnu) C Compiler anbietet ?
Die haben andere erweitert und auf trigonometrische Funktionen ausgedehnt. Es gibt auch andere Implementierungen, die in dem thread verglichen werden. Die von mir initiierte war die größte und langsamste :-|
Cheers
Detlef
PS: Die 64 Bit Emulation habe ich geschrieben weil ich dachte ich benötige sie. Das war aber ein Irrtum und ein Designfehler. 32Bit float geben Dir ca. 120dB Dynamik. Wenn Du damit nicht auskommst liegt womöglich ein designflaw vor.
PS: Die 64 Bit Emulation habe ich geschrieben weil ich dachte ich
benötige sie. Das war aber ein Irrtum und ein Designfehler. 32Bit float
geben Dir ca. 120dB Dynamik. Wenn Du damit nicht auskommst liegt
womöglich ein designflaw vor.
Moment, ein 32 bit float sollte eine weitaus höhere Dynamik liefern (>1000 dB). Außerdem geht es hier ja um die Genauigkeit, nicht um die Dynamik.
Mit Dynamik ist hier die Rechendynamik gemeint, wieviel gültige Stellen Du hast. Das hat mit dem abgedeckten Zahlenbereich nichts zu tun. Bei 32Bit float sind 23 Bit Mantisse, Rest Exponent. 20*log10(2^23)=138dB, naja, close enough.
Mit Dynamik ist hier die Rechendynamik gemeint, wieviel gültige
Stellen
Du hast. Das hat mit dem abgedeckten Zahlenbereich nichts zu tun. Bei
32Bit float sind 23 Bit Mantisse, Rest Exponent. 20*log10(2^23)=138dB,
naja, close enough.
Sofern ich mich richtig erinnere, gibt es ein implizites bit. Außerdem wird hier meist von precision / Genauigkeit gesprochen und es wird zumeist auch nur in Dezimalstellen angegeben. Das ist, finde ich, deutlich zugänglicher. -> log10(2^24) -> 7.22 Dezimalstellen Genauigkeit. Aber manchmal reicht das halt nicht.. :-)
Außerdem
wird hier meist von precision / Genauigkeit gesprochen und es wird
zumeist auch nur in Dezimalstellen angegeben. Das ist, finde ich,
deutlich zugänglicher.
Nur Nicht-Programmierer liebäugeln mit irgendwelchen Dezimalstellen. Programmierer wissen: Es gibt in ihrer Maschine nur Dualstellen (AKA: Bits).