Hallo, bei meiner Suche nach einer Festkomma-Library für AVR bin ich auf das Projekt avrfix (http://avrfix.sourceforge.net/) gestoßen. Dort sind Konvertierungs-Makros definiert: z.B. _Accum nach double: #define ktod(k) ((double)((_sAccum)(k) / (1 << SACCUM_FBIT))) oder float nach _Accum: #define ftok(f) ((_nAccum)(f) * (1 << ACCUM_FBIT)) wobei SACCUM_FBIT beispielsweise die Position des ersten Integral-Bits des 'short _Accum'-Typen angibt. (_nAccum entspricht _Accum) Arbeitet jemand mit dieser Bibliothek und kann mir sagen, ob irgendeine Magie oder für mich undurchsichtige Intention in diesen 'Formeln' versteckt? Denn leider ergeben sie nicht das richtige Ergebnis und auch logisch kann ich sie nicht nachvollziehen. Sinn (und in der Ausgabe das korrekte Ergebnis) ergäbe für mich z.B. #define ktod(k) ((double)(k) / (1 << ACCUM_FBIT)) und #define ftok(f) ((_nAccum)((f) * (1 << ACCUM_FBIT))) Ist das ein Fehler in der Bibliothek oder in meinem Verständnis? Vielen Dank!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.