# 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 strtof, strtod, 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);.

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

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

        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)

### See also

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

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