Quelqu'un at-il à portée de main les extraits de code pour convertir un IEEE 754 double
la immédiatement inférieure (resp. Supérieure) float
, sans changer ou en supposant quoi que ce soit au sujet de l'arrondissement actuel du FPU mode?Conversion double pour flotter sans compter sur le mode d'arrondi FPU
Remarque: cette contrainte implique probablement de ne pas utiliser du tout la FPU. Je m'attends à ce que la façon la plus simple de le faire dans ces conditions soit de lire les bits du double en 64 bits et de travailler avec ça.
Vous pouvez supposer le boutisme de votre choix pour la simplicité, et que la double en question est disponible à travers le champ d
de l'union ci-dessous:
union double_bits
{
long i;
double d;
};
Je voudrais essayer de le faire moi-même mais je suis certain J'introduirais des bogues difficiles à remarquer pour les nombres dénormalisés ou négatifs.
sur les systèmes glibc vous trouvez un fichier d'en-tête ieee754.h, qui définit les syndicats pour les types à virgule flottante et une structure de bitfield, de sorte que vous pouvez travailler avec la mantisse et l'exposant plus facile, désolé mais je ne peux pas vous donner un vrai code. – quinmars