HUGE_VAL est-il vraiment grand ?
Le
Arnaud Giersch

Bonjour,
Une question à propos de HUGE_VAL (math.h).
Est-ce qu'on est certain que, pour x fini, les expressions suivantes
sont toujours vraies ?
HUGE_VAL >= x
-HUGE_VAL <= x
J'ai beau chercher, je ne trouve pas de référence qui le dit
explicitement.
En fait, dans un code, je voudrais changer un
#define MIN_VALUE -10000
par
#define MIN_VALUE -HUGE_VAL
Arnaud
Une question à propos de HUGE_VAL (math.h).
Est-ce qu'on est certain que, pour x fini, les expressions suivantes
sont toujours vraies ?
HUGE_VAL >= x
-HUGE_VAL <= x
J'ai beau chercher, je ne trouve pas de référence qui le dit
explicitement.
En fait, dans un code, je voudrais changer un
#define MIN_VALUE -10000
par
#define MIN_VALUE -HUGE_VAL
Arnaud
HUGE_VAL est une valeur d'erreur renvoyée par certaines fonctions de la
bibliothèque pour signaler normalement des cas de débordement.
Si tu cherches une constante qui exprime une grande valeur finie, il
vaut mieux utiliser DBL_MAX (ou FLT_MAX, LDBL_MAX).
Euh, tu passes d'un type entier à un type flottant... Je pense que tu
vas avoir des problèmes de concordance de types à court terme ;-)
Sinon je penses que tu peux essayer
#define MIN_VALUE INT_MIN
Antoine
C'est bien ce que j'ai cru comprendre.
Ok. Merci pour ta réponse. Je vais utiliser ça.
J'étais d'abord parti sur INFINITY, mais c'est restreint à C99, d'où
ma question.
J'ai copié l'existant tel quel, mais ça devrait effectivement être
-10000.0. MIN_VALUE est en fait toujours comparé à un double, j'avais
oublié de le préciser.
Arnaud
un INFINITY utilisable n'est meme pas C99.
Il faut C99 + IEEE754, et il existe quelques plateformes (rares, par exemple
du vax) ou IEEE754 ne fait pas de sens / coute trop cher.
C99 reclame pour INFINITY:
- soit une vraie valeur infinie
- soit un float qui va deborder, ce qui reclame un diagnostic et pose
quelques petits problemes avec d'autres bouts de la norme.
Le truc "previsible", c'est NAN, qui lui est carrement non defini s'il
n'y a pas sur la plateforme...
De l'interet de rester dans des valeurs normalisees, DBL_MAX, FLT_MAX
et consorts...
[...]
Merci pour ces précisions.
Arnaud