FPCLASSIFY(3) | Library Functions Manual | FPCLASSIFY(3)

# NAME

`fpclassify`, `isfinite`, `isinf`, `isnan`, `isnormal`, `signbit`, `finite`, `finitef`, `isinff`, `isnanf` — classify a floating-point number

# SYNOPSIS

Math Library (libm, -lm)
`#include <math.h>`

int
`fpclassify`(real-floating x);

int
`isfinite`(real-floating x);

int
`isinf`(real-floating x);

int
`isnan`(real-floating x);

int
`isnormal`(real-floating x);

int
`signbit`(real-floating x);

# DESCRIPTION

The `fpclassify`() macro takes an argument of x and returns one of the following manifest constants:

`FP_INFINITE`
  Indicates that x is an infinite number.
`FP_NAN`
  Indicates that x is not a number (NaN).
`FP_NORMAL`
  Indicates that x is a normalized number.
`FP_SUBNORMAL`
  Indicates that x is a denormalized number.
`FP_ZERO`
  Indicates that x is zero (0 or -0).

The `isfinite`() macro returns a non-zero value if and only if its argument has a finite (zero, subnormal, or normal) value.

The `isinf`(), `isnan`(), and `isnormal`() macros return non-zero if and only if x is an infinity, NaN, or a non-zero normalized number, respectively.

The `signbit`() macro takes an argument of x and returns non-zero if the value of its sign is negative, otherwise 0.

# SEE ALSO

isgreater(3)

# STANDARDS

The `fpclassify`(), `isfinite`(), `isinf`(), `isnan`(), `isnormal`(), and `signbit`() macros conform to ISO/IEC 9899:1999 (“ISO C99”).

The symbols `isinff`(), and `isnanf`() are provided as compatibility aliases to `isinf`(), and `isnan`(), respectively, and their uses are deprecated. Similarly, `finite`() and `finitef`() are deprecated versions of `isfinite`().

# HISTORY

The `fpclassify`(), `isfinite`(), `isinf`(), `isnan`(), `isnormal`(), and `signbit`() macros were added in OpenBSD 4.4. 3BSD introduced `isinf`() and `isnan`() functions, which accepted double arguments; these have been superseded by the macros described above.

June 7, 2025 | Debian