J'écris un programme pour un matériel embarqué qui ne supporte que l'arithmétique à virgule flottante 32 bits à simple précision. L'algorithme que j'implémente, cependant, nécessite une addition et une comparaison en double précision 64 bits. J'essaie d'émuler double
en utilisant un tuple de deux float
s. Donc un double d
sera émulé comme un struct
contenant le tuple : (float d.hi, float d.low)
.
La comparaison devrait être simple en utilisant un ordre lexicographique. L'addition, en revanche, est un peu délicate, car je ne suis pas sûr de la base à utiliser. Devrais-je utiliser FLT_MAX
? Et comment puis-je détecter un portage ?
Comment cela peut-il être fait ?
Editer (Clarté) : J'ai besoin des chiffres significatifs supplémentaires plutôt que de l'étendue supplémentaire.