Namespaces
Variants
Views
Actions

nan, nanf, nanl

From cppreference.com
< c‎ | numeric‎ | math
 
 
 
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99)
(C99)
nannanfnanl
(C99)(C99)(C99)
Exponential functions
(C99)
(C99)
(C99)
(C99)
Power functions
(C99)
(C99)
Trigonometric and hyperbolic functions
(C99)
(C99)
(C99)
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Nearest integer floating point operations
(C99)(C99)(C99)
(C99)
(C99)(C99)(C99)
Floating point manipulation functions
(C99)(C99)
(C99)
(C99)
Classification
(C99)
(C99)
(C99)
Macro constants
 
Defined in header <math.h>
float       nanf( const char* arg );
(since C99)
double      nan( const char* arg );
(since C99)
long double nanl( const char* arg );
(since C99)

Converts the implementation-defined character string arg into the corresponding quiet NaN value, as if by calling strtod, strtof, or strtold, respectively, as follows:

The call nan("string") is equivalent to the call strtod("NAN(string)", (char**)NULL);.

The call nan("") is equivalent to the call strtod("NAN()", (char**)NULL);.

The call nan(NULL) is equivalent to the call strtod("NAN", (char**)NULL);.

Contents

[edit] Parameters

arg - narrow character string identifying the contents of a NaN

[edit] Return value

The quiet NaN value that corresponds to the identifying string arg or zero if the implementation does not support quiet NaNs.

[edit] 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);
}

Possible output:

nan("1") = nan (7ff8000000000001)
nan("2") = nan (7ff8000000000002)

[edit] References

  • C11 standard (ISO/IEC 9899:2011):
  • 7.12.11.2 The nan functions (p: 256)
  • 7.25 Type-generic math <tgmath.h> (p: 373-375)
  • F.10.8.2 The nan functions (p: 529)
  • C99 standard (ISO/IEC 9899:1999):
  • 7.12.11.2 The nan functions (p: 237)
  • 7.22 Type-generic math <tgmath.h> (p: 335-337)
  • F.9.8.2 The nan functions (p: 465)

[edit] See also

(C99)
checks if the given number is NaN
(function) [edit]
(C99)
evaluates to a quiet NaN of type float
(macro constant) [edit]
C++ documentation for nanf, nan, nanl