NAN

From cppreference.com
< c‎ | numeric‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
(C99)
(C99)
(C23)
(C23)
(C23)
Exponential functions
(C23)
(C99)
(C99)
(C23)
(C23)

(C99)
(C99)(C23)
(C23)
(C23)
Power functions
(C99)
(C23)
(C23)

(C99)
(C23)
(C23)
(C23)
Trigonometric and hyperbolic functions
(C23)
(C23)
(C23)
(C23)
(C99)
(C99)
(C99)
Nearest integer floating-point
(C99)(C99)(C99)
(C23)
(C99)

(C99)
(C99)(C99)(C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
(C99)(C99)
(C99)(C23)
(C99)
(C99)(C99)
(C23)(C23)
(C99)
(C23)
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
(C23)
(C23)
Decimal re-encoding functions
(C23)
(C23)
(C23)
(C23)
Total order and payload functions
(C23)
(C23)
Classification
(C99)
(C23)
(C99)
(C99)
(C99)
(C99)
(C99)
(C23)
(C23)
(C99)
(C99)
(C99)
(C99)
(C23)
(C23)

Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
NANDEC_NAN
(C99)(C23)
Arguments and return values
(C99) (C99) (C99) (C99) (C99)
Error handling
Fast operation indicators
Defined in header <math.h>
#define NAN /*implementation defined*/
(since C99)

The macro NAN expands to a constant expression of type float

The style used to print a NaN is implementation-defined.

Notes

There are many different NaN values, differentiated by their payloads and their sign bits. The contents of the payload and the sign bit of the NaN generated by the macro NAN are implementation-defined.

Example

Show style used to print a NaN and IEEE format.

#include <inttypes.h>
#include <math.h>
#include <stdint.h>
#include <stdio.h>
#include <string.h>
 
int main(void)
{
    const double f = NAN;
    uint64_t fn;
    memcpy(&fn, &f, sizeof f);
    printf("NAN:   %f %" PRIx64 "\n", f, fn);
}

Possible output:

NAN:   nan 7ff8000000000000

References

  • C23 standard (ISO/IEC 9899:2024):
  • 7.12/5 NAN (p: TBD)
  • F.10/11/13 NAN (p: TBD)
  • C17 standard (ISO/IEC 9899:2018):
  • 7.12/5 NAN (p: TBD)
  • F.10/11/13 NAN (p: TBD)
  • C11 standard (ISO/IEC 9899:2011):
  • 7.12/5 NAN (p: 232)
  • F.10/11/13 NAN (p: 518)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.12/5 NAN (p: 213)
  • F.9/11/13 NAN (p: 455)

See also

(C99)(C99)(C99)
returns a NaN (not-a-number)
(function)
(C99)
checks if the given number is NaN
(function macro)