PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Raspi Linux C11: double umwandeln zu 48-bit float ?



HaWe
22.05.2017, 16:20
hallo,
gibt es für den Raspi mit Linux und gcc/gpp C(++)11 eine Art standardisiertes oder bewährtes Verfahren, zum double-umwandeln in ein 48bit-float-Format - und dann auch wieder zurück ? (48bit float gabs ja sogar früher mal als sog. "long float").
32bit float ist leider etwas zu ungenau, und für 64bit double reicht der Speicherplatz nicht in einem data transfer array.
Ich will daher die ursprünglichen 64bit double in 48bit umkonvertieren, die dann seriell in 6 bytes übertragen, dann wieder in 64bit double zurück umwandeln und dann damit weiter rechnen.
Bevor ich nun selber anfange mit Basen, Mantissen und Exponenten herumzujonglieren meine Frage nach schnellen, genauen und bewährten Verfahren.

ps,
eine Alternative wäre auch ein 48bit fixed point Format.

- - - Aktualisiert - - -

habs mit überlegt - bevor ich anfange, 3 bits im expo einzusparen (8 bit wie bei float), verschenke ich die und schneide einfach die letzen 16 bits der Mantisse per memcpy ab. Dann ist zwar mehr verschenkt als unbedingt nötig, ich muss aber nicht mittendrin mit den bits 52-54 rumwurschteln.


Es sei denn, jemand findet doch noch eine flinke fertige Lib zum Einbinden... ;)

HaWe
23.05.2017, 11:37
update:

jawohl, funktioniert:
48 bit float ergibt wie erwartet 10 Dezimalstellen Genauigkeit.
man muss allerdings bei Raspi Linux die 2 MSB abschneiden, nicht die 2 LSB 8)