Go to the previous, next section.

This section describes some miscellaneous test functions on doubles.
Prototypes for these functions appear in ``math.h'`. These are BSD
functions, and thus are available if you define `_BSD_SOURCE`

or
`_GNU_SOURCE`

.

__Function:__ int **isinf** *(double x)*

This function returns `-1`

if `x` represents negative infinity,
`1`

if `x` represents positive infinity, and `0`

otherwise.

__Function:__ int **isnan** *(double x)*

This function returns a nonzero value if `x` is a "not a number"
value, and zero otherwise. (You can just as well use

to get the same result).
`x` !=
`x`

__Function:__ int **finite** *(double x)*

This function returns a nonzero value if `x` is finite or a "not a
number" value, and zero otherwise.

__Function:__ double **infnan** *(int error)*

This function is provided for compatibility with BSD. The other
mathematical functions use `infnan`

to decide what to return on
occasion of an error. Its argument is an error code, `EDOM`

or
`ERANGE`

; `infnan`

returns a suitable value to indicate this
with. `-ERANGE`

is also acceptable as an argument, and corresponds
to `-HUGE_VAL`

as a value.

In the BSD library, on certain machines, `infnan`

raises a fatal
signal in all cases. The GNU library does not do likewise, because that
does not fit the ANSI C specification.

**Portability Note:** The functions listed in this section are BSD
extensions.

Go to the previous, next section.