isnan
Header: <math.h>
Determines if the given floating-point number arg is a not-a-number (NaN) value. The macro returns an integral value.
# Declarations
#define isnan(arg) /* implementation defined */
(since C99)
# Parameters
arg: floating-point value
# Return value
Nonzero integral value if arg is a NaN, 0 otherwise.
# Notes
There are many different NaN values with different sign bits and payloads, see nan.
NaN values never compare equal to themselves or to other NaN values. Copying a NaN may change its bit pattern.
Another way to test if a floating-point value is NaN is to compare it with itself: bool is_nan(double x) { return x != x; }
# Example
#include <float.h>
#include <math.h>
#include <stdio.h>
int main(void)
{
printf("isnan(NAN) = %d\n", isnan(NAN));
printf("isnan(INFINITY) = %d\n", isnan(INFINITY));
printf("isnan(0.0) = %d\n", isnan(0.0));
printf("isnan(DBL_MIN/2.0) = %d\n", isnan(DBL_MIN / 2.0));
printf("isnan(0.0 / 0.0) = %d\n", isnan(0.0 / 0.0));
printf("isnan(Inf - Inf) = %d\n", isnan(INFINITY - INFINITY));
}