---
name: "nan"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/nan"
---

# nan(3)

quiet s

## NAME

**nan**, **nanf**, **nanl** – quiet s

## LIBRARY

Math Library (libm, -lm)

## SYNOPSIS

**#include \<math.h\>**

*double*\

**nan**(*const char \*s*);

*float*\

**nanf**(*const char \*s*);

*long* *double*\

**nanl**(*const char \*s*);

## DESCRIPTION

The NAN macro expands to a quiet  (Not A Number). Similarly, each of the **nan**(), **nanf**(), and **nanl**() functions generate a quiet  value without raising an invalid exception. The argument *s* should point to either an empty string or a hexadecimal representation of a non-negative integer (e.g., "0x1234".) In the latter case, the integer is encoded in some free bits in the representation of the , which sometimes store machine-specific information about why a particular  was generated. There are 22 such bits available for *float* variables, 51 bits for *double* variables, and at least 51 bits for a *long* *double*. If *s* is improperly formatted or represents an integer that is too large, then the particular encoding of the quiet  that is returned is indeterminate.

## COMPATIBILITY

Calling these functions with a non-empty string isn't portable. Another operating system may translate the string into a different\
  encoding, and furthermore, the meaning of a given  encoding varies across machine architectures. If you understood the innards of a particular platform well enough to know what string to use, then you would have no need for these functions anyway, so don't use them. Use the NAN macro instead.

## SEE ALSO

[fenv(3)](/fenv/3.md), [ieee(3)](/ieee/3.md), [isnan(3)](/isnan/3.md), [math(3)](/math/3.md), [strtod(3)](/strtod/3.md)

## STANDARDS

The **nan**(), **nanf**(), and **nanl**() functions and the NAN macro conform to ISO/IEC 9899:1999 (“ISO C99”).
