HUGE_VALF, HUGE_VAL, HUGE_VALL
| Common mathematical functions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Mathematical special functions (C++17) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Mathematical constants (C++20) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Basic linear algebra algorithms (C++26) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Data-parallel types (SIMD) (C++26) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Floating-point environment (C++11) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Complex numbers | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Numeric array (
valarray
)
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Pseudo-random number generation | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Bit manipulation (C++20) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Saturation arithmetic (C++26) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Factor operations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Interpolations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Generic numeric operations | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| C-style checked integer arithmetic | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Nearest integer floating point operations | |||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
| Floating point manipulation functions | |||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
| Classification and comparison | |||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||
| Types | |||||||||||||||||||||||||||||||||||||||||
| Macro constants | |||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<cmath>
|
||
|
#define HUGE_VALF /* implementation defined */
|
(depuis C++11) | |
|
#define HUGE_VAL /* implementation defined */
|
||
|
#define HUGE_VALL /* implementation defined */
|
(depuis C++11) | |
Les macros HUGE_VALF , HUGE_VAL et HUGE_VALL se développent en expressions constantes à virgule flottante positives qui sont égales aux valeurs renvoyées par les fonctions et opérateurs à virgule flottante en cas de dépassement de capacité (voir math_errhandling ).
| Constante | Explication |
HUGE_VALF
|
S'étend à une expression float positive qui indique un dépassement |
HUGE_VAL
|
S'étend à une expression double positive qui indique un dépassement, pas nécessairement représentable comme float |
HUGE_VALL
|
S'étend à une expression long double positive qui indique un dépassement, pas nécessairement représentable comme float ou double |
Sur les implémentations qui prennent en charge les infinis en virgule flottante, ces macros se développent toujours en les infinis positifs de float , double , et long double , respectivement.
Notes
Sur les implémentations qui ne prennent pas en charge les infinis en virgule flottante, ces macros se développent vers le nombre fini maximum de leurs types respectifs.
C++98 a ajouté float et long double les surcharges des fonctions mathématiques. Il existe un problème que les float surcharges ne peuvent pas retourner HUGE_VAL pour indiquer un dépassement de capacité car cette macro n'est pas garantie d'être représentable en tant que float .
LWG issue 357 a été soulevé pour cibler ce problème. LWG a constaté que C99 présente le même problème ( float et long double overloads ont également été ajoutés dans C99), et C99 a introduit de nouvelles macros HUGE_VALF et HUGE_VALL pour résoudre le problème. Par conséquent, le problème a été fermé et la résolution de C99 a été adoptée dans C++11.
Voir aussi
|
(C++11)
|
évalue à l'infini positif ou la valeur garantissant le dépassement de capacité d'un
float
(constante macro) |
|
Documentation C
pour
HUGE_VAL
|
|