std:: isnan
|
헤더에 정의됨
<cmath>
|
||
| (1) | ||
|
bool
isnan
(
float
num
)
;
bool
isnan
(
double
num
)
;
|
(C++11 이후)
(C++23 이전) |
|
|
constexpr
bool
isnan
(
/*floating-point-type*/
num
)
;
|
(C++23 이후) | |
|
SIMD 오버로드
(C++26 이후)
|
||
|
헤더에 정의됨
<simd>
|
||
|
template
<
/*math-floating-point*/
V
>
constexpr
typename
/*deduced-simd-t*/
<
V
>
::
mask_type
|
(S) | (C++26 이후) |
|
헤더에 정의됨
<cmath>
|
||
|
template
<
class
Integer
>
bool isnan ( Integer num ) ; |
(A) |
(C++11 이후)
(C++23부터 constexpr) |
|
S)
SIMD 오버로드는
v_num
에 대해 요소별(element-wise)
std::isnan
을 수행합니다.
|
(C++26부터) |
목차 |
매개변수
| num | - | 부동 소수점 또는 정수 값 |
| v_num | - | 요소 타입이 부동 소수점 타입인 std::basic_simd 전문화의 데이터 병렬 객체 |
반환값
[
0
,
v_num.
size
(
)
)
내의 모든 i에 대해
v_num
[
i
]
이 NaN이면
true
를, 그렇지 않으면
false
를 갖는 데이터-병렬 마스크 객체.
참고 사항
서로 다른 부호 비트와 페이로드를 가진 다양한 NaN 값들이 존재합니다. 자세한 내용은 std::nan 과 std::numeric_limits::quiet_NaN 을 참조하십시오.
NaN 값은 자기 자신이나 다른 NaN 값과 절대 동등하게 비교되지 않습니다. IEEE-754에 따르면 NaN을 복사할 때 비트 표현(부호와 payload )을 보존해야 할 의무는 없지만, 대부분의 구현체에서는 보존합니다.
부동 소수점 값이 NaN인지 테스트하는 또 다른 방법은 자기 자신과 비교하는 것입니다: bool is_nan ( double x ) { return x ! = x ; } .
GCC
와
Clang
은
-ffinite-math
옵션을 지원합니다 (이 옵션은
-ffast-math
에 의해 추가적으로 암시됨). 이 옵션은 각 컴파일러가 NaN, 무한대, 음의 영과 같은 특수 IEEE-754 부동 소수점 값이 존재하지 않는다고 가정하도록 허용합니다. 다시 말해, 이 옵션 하에서는
std::isnan
이 항상
false
를 반환한다고 가정합니다.
추가 오버로드는 반드시 (A) 와 동일하게 제공될 필요가 없습니다. 정수 타입의 인자 num 에 대해, std :: isnan ( num ) 가 std :: isnan ( static_cast < double > ( num ) ) 와 동일한 효과를 보장할 수 있을 정도로만 제공되면 됩니다.
예제
#include <cfloat> #include <cmath> #include <iostream> int main() { std::cout << std::boolalpha << "isnan(NaN) = " << std::isnan(NAN) << '\n' << "isnan(Inf) = " << std::isnan(INFINITY) << '\n' << "isnan(0.0) = " << std::isnan(0.0) << '\n' << "isnan(DBL_MIN/2.0) = " << std::isnan(DBL_MIN / 2.0) << '\n' << "isnan(0.0 / 0.0) = " << std::isnan(0.0 / 0.0) << '\n' << "isnan(Inf - Inf) = " << std::isnan(INFINITY - INFINITY) << '\n'; }
출력:
isnan(NaN) = true isnan(Inf) = false isnan(0.0) = false isnan(DBL_MIN/2.0) = false isnan(0.0 / 0.0) = true isnan(Inf - Inf) = true
참고 항목
|
(C++11)
(C++11)
(C++11)
|
숫자가 아님(NaN)
(함수) |
|
(C++11)
|
주어진 부동소수점 값을 분류함
(함수) |
|
(C++11)
|
주어진 숫자가 유한한 값인지 확인함
(함수) |
|
(C++11)
|
주어진 숫자가 무한인지 확인함
(함수) |
|
(C++11)
|
주어진 숫자가 정규(normal)인지 확인함
(함수) |
|
(C++11)
|
두 부동소수점 값이 비순서(unordered)인지 확인함
(함수) |
|
C 문서
for
isnan
|
|