**fpclassify**,

**isfinite**,

**isinf**,

**isnan**,

**isnormal**,

**signbit**,

**finite**,

**finitef**,

**isinff**,

**isnanf**
—

classify a floating-point number
**#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`);

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.

isgreater(3)
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**().

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.