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 | |||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||
|
헤더 파일에 정의됨
<cmath>
|
||
|
#define HUGE_VALF /* implementation defined */
|
(C++11 이후) | |
|
#define HUGE_VAL /* implementation defined */
|
||
|
#define HUGE_VALL /* implementation defined */
|
(C++11 이후) | |
매크로 HUGE_VALF , HUGE_VAL 및 HUGE_VALL 은 오버플로우 발생 시 부동 소수점 함수 및 연산자가 반환하는 값과 비교 시 동일한 양의 부동 소수점 상수 표현식으로 확장됩니다 ( math_errhandling 참조).
| 상수 | 설명 |
HUGE_VALF
|
오버플로우를 나타내는 양의 float 표현식으로 확장됨 |
HUGE_VAL
|
오버플로우를 나타내는 양의 double 표현식으로 확장되며, float 로 표현 가능하지 않을 수 있음 |
HUGE_VALL
|
오버플로우를 나타내는 양의 long double 표현식으로 확장되며, float 또는 double 로 표현 가능하지 않을 수 있음 |
부동소수점 무한대를 지원하는 구현에서, 이 매크로들은 항상 각각 float , double , 그리고 long double 의 양의 무한대로 확장됩니다.
참고 사항
부동 소수점 무한대를 지원하지 않는 구현체에서, 이러한 매크로들은 각각 해당 타입의 최대 유한 숫자로 확장됩니다.
C++98은 수학 함수의 float 및 long double 오버로드를 추가했습니다. float 오버로드가 오버플로를 나타내기 위해 HUGE_VAL 을 반환할 수 없다는 문제가 있습니다. 왜냐하면 이 매크로가 float 로 표현 가능하다는 보장이 없기 때문입니다.
LWG 이슈 357 이 이 문제를 해결하기 위해 제기되었습니다. LWG는 C99에도 동일한 문제가 있음을 발견했으며( float 및 long double 오버로드도 C99에서 추가됨), C99가 이 문제를 해결하기 위해 새로운 매크로 HUGE_VALF 와 HUGE_VALL 를 도입했습니다. 따라서 해당 이슈는 종결되었으며 C99의 해결책이 C++11에서 채택되었습니다.
참고 항목
|
(C++11)
|
양의 무한대로 평가되거나
float
가 오버플로우되도록 보장된 값
(매크로 상수) |
|
C 문서
for
HUGE_VAL
|
|