nan

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

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

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

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)

See also

(C99)
checks if the given number is NaN
(function)
(C99)
evaluates to a quiet NaN of type float
(macro constant)
C++ documentation for nanf, nan, nanl
doc_C_Language
2016-10-10 18:35:57
Comments
Leave a Comment

Please login to continue.