---
name: "isnormal"
section: "3"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/finite"
---

# isnormal(3)

classify a floating-point number

Part of [finite(3)](/finite/3.md).

## NAME

**fpclassify**, **isfinite**, **isinf**, **isnan**, **isnormal** – classify a floating-point number

## LIBRARY

Math Library (libm, -lm)

## SYNOPSIS

**#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*);

## 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 symbol **isnanf**() is provided as an alias to **isnan**() for compatibility, and its use is deprecated. Similarly, **finite**() and **finitef**() are deprecated versions of **isfinite**().

## SEE ALSO

[isgreater(3)](/isgreater/3.md), [math(3)](/math/3.md), [signbit(3)](/signbit/3.md)

## STANDARDS

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

## HISTORY

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