On this page
nan, nanf, nanl, nand32, nand64, nand128
Defined in header <math.h> | 
      ||
|---|---|---|
 | 
      (1) | (since C99) | 
 | 
      (2) | (since C99) | 
 | 
      (3) | (since C99) | 
 | 
      (4) | (since C23) | 
 | 
      (5) | (since C23) | 
 | 
      (6) | (since C23) | 
Converts the implementation-defined character string arg into the corresponding quiet NaN value, as if by calling the appropriate parsing function strtoX, as follows:
- The call 
nan("n-char-sequence"), where n-char-sequence is a sequence of digits, Latin letters, and underscores, is equivalent to the call/*strtoX*/("NAN(n-char-sequence)", (char**)NULL);. - The call 
nan("")is equivalent to the call/*strtoX*/("NAN()", (char**)NULL);. - The call 
nan("string"), wherestringis neither an n-char-sequence nor an empty string, is equivalent to the call/*strtoX*/("NAN", (char**)NULL);. 
strtof.
  strtod.
  strtold.
  strtod32.
  strtod64.
  strtod128.
  The functions returning decimal floating point values are declared if and only the implementation predefines   | 
      (since C23) | 
Parameters
| arg | - | narrow character string identifying the contents of a NaN | 
Return value
The quiet NaN value that corresponds to the identifying string arg or zero if the implementation does not support quiet NaNs.
If the implementation supports IEEE floating-point arithmetic (IEC 60559), it also supports quiet NaNs.
Error handling
This function is not subject to any of the error conditions specified in math_errhandling.
Example
#include <stdio.h>
#include <math.h>
#include <stdint.h>
#include <inttypes.h>
#include <string.h>
 
int main(void)
{
    double f1 = nan("1");
    uint64_t f1n; memcpy(&f1n, &f1, sizeof f1);
    printf("nan(\"1\")   = %f (%" PRIx64 ")\n", f1, f1n);
 
    double f2 = nan("2");
    uint64_t f2n; memcpy(&f2n, &f2, sizeof f2);
    printf("nan(\"2\")   = %f (%" PRIx64 ")\n", f2, f2n);
 
    double f3 = nan("0xF");
    uint64_t f3n; memcpy(&f3n, &f3, sizeof f3);
    printf("nan(\"0xF\") = %f (%" PRIx64 ")\n", f3, f3n);
}
   Possible output:
nan("1")   = nan (7ff8000000000001)
nan("2")   = nan (7ff8000000000002)
nan("0xF") = nan (7ff800000000000f)
   References
- C17 standard (ISO/IEC 9899:2018):
 - 7.12.11.2 The nan functions (p: 186-187)
 - F.10.8.2 The nan functions (p: 386)
 - C11 standard (ISO/IEC 9899:2011):
 - 7.12.11.2 The nan functions (p: 256)
 - F.10.8.2 The nan functions (p: 529)
 - C99 standard (ISO/IEC 9899:1999):
 - 7.12.11.2 The nan functions (p: 237)
 - F.9.8.2 The fabs functions (p: 465)
 
See also
| 
       
        (C99)
         | 
      checks if the given number is NaN  (function macro)  | 
     
| 
       
        (C99)
         | 
      evaluates to a quiet NaN of type float (macro constant)  | 
     
C++ documentation for nanf, nan, nanl | 
     |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
 https://en.cppreference.com/w/c/numeric/math/nan