Typumwandlung in Fixkomma-Library

OP #2747540
Lesenswert?

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.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren