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