Provided by:

manpages-dev_3.27-1ubuntu2_all **NAME**

fpclassify, isfinite, isnormal, isnan, isinf - floating-point
classification macros

**SYNOPSIS**

**#include** **<math.h>**
**int** **fpclassify(**__x__**);**
**int** **isfinite(**__x__**);**
**int** **isnormal(**__x__**);**
**int** **isnan(**__x__**);**
**int** **isinf(**__x__**);**
Link with __-lm__.
Feature Test Macro Requirements for glibc (see **feature_test_macros**(7)):
**fpclassify**(), **isfinite**(), **isnormal**():
_XOPEN_SOURCE >= 600 || _ISOC99_SOURCE ||
_POSIX_C_SOURCE >= 200112L;
or __cc__ __-std=c99__
**isnan**():
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE || _ISOC99_SOURCE ||
_POSIX_C_SOURCE >= 200112L;
or __cc__ __-std=c99__
**isinf**():
_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE >= 600 ||
_ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L;
or __cc__ __-std=c99__

**DESCRIPTION**

Floating point numbers can have special values, such as infinite or
NaN. With the macro **fpclassify(**__x__**)** you can find out what type __x__ is.
The macro takes any floating-point expression as argument. The result
is one of the following values:
**FP_NAN** __x__ is "Not a Number".
**FP_INFINITE** __x__ is either positive infinity or negative infinity.
**FP_ZERO** __x__ is zero.
**FP_SUBNORMAL** __x__ is too small to be represented in normalized format.
**FP_NORMAL** if nothing of the above is correct then it must be a
normal floating-point number.
The other macros provide a short answer to some standard questions.
**isfinite(**__x__**)** returns a nonzero value if
(fpclassify(x) != FP_NAN && fpclassify(x) != FP_INFINITE)
**isnormal(**__x__**)** returns a nonzero value if (fpclassify(x) == FP_NORMAL)
**isnan(**__x__**)** returns a nonzero value if (fpclassify(x) == FP_NAN)
**isinf(**__x__**)** returns 1 if __x__ is positive infinity, and -1 if __x__ is
negative infinity.

**CONFORMING** **TO**

C99, POSIX.1.
For **isinf**(), the standards merely say that the return value is nonzero
if and only if the argument has an infinite value.

**NOTES**

In glibc 2.01 and earlier, **isinf**() returns a nonzero value (actually:
1) if __x__ is positive infinity or negative infinity. (This is all that
C99 requires.)

**SEE** **ALSO**

**finite**(3), **INFINITY**(3), **isgreater**(3), **signbit**(3)

**COLOPHON**

This page is part of release 3.27 of the Linux __man-pages__ project. A
description of the project, and information about reporting bugs, can
be found at http://www.kernel.org/doc/man-pages/.
2010-09-20 FPCLASSIFY(3)