nan, nanf, nanl, nand32, nand64, nand128
Types | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Macro constants | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
Defined in header
<math.h>
|
||
float
nanf
(
const
char
*
arg
)
;
|
(1) | (since C99) |
double
nan
(
const
char
*
arg
)
;
|
(2) | (since C99) |
long
double
nanl
(
const
char
*
arg
)
;
|
(3) | (since C99) |
_Decimal32 nand32
(
const
char
*
arg
)
;
|
(4) | (since C23) |
_Decimal64 nand64
(
const
char
*
arg
)
;
|
(5) | (since C23) |
_Decimal128 nand128
(
const
char
*
arg
)
;
|
(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" ) , where string is neither an n-char-sequence nor an empty string, is equivalent to the call /*strtoX*/ ( "NAN" , ( char ** ) NULL ) ; .
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
|