nan, nanf, nanl - cppreference.com

##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# nan, nanf, nanl

From cppreference.com
< c‎ | numeric‎ | math

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);.

### [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

Run this code

    #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] See also

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

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=c/numeric/math/nan&oldid=71186"