logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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

Attributes

       For an explanation of the terms used in this section, see attributes(7).
       ┌─────────────────────────────────────────────────────────────────────────────┬───────────────┬─────────┐
       │ InterfaceAttributeValue   │
       ├─────────────────────────────────────────────────────────────────────────────┼───────────────┼─────────┤
       │ fpclassify(), isfinite(), isnormal(), isnan(), isinf()                      │ Thread safety │ MT-Safe │
       └─────────────────────────────────────────────────────────────────────────────┴───────────────┴─────────┘

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_NANx is "Not a Number".

       FP_INFINITEx is either positive infinity or negative infinity.

       FP_ZEROx is zero.

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

History

       POSIX.1-2001, C99.

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

Library

       Math library (libm, -lm)

Name

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

Notes

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

See Also

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

Linux man-pages 6.9.1                              2024-05-02                                      fpclassify(3)

Standards

       C11, POSIX.1-2008.

Synopsis

#include<math.h>intfpclassify(x);intisfinite(x);intisnormal(x);intisnan(x);intisinf(x);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

       fpclassify(), isfinite(), isnormal():
           _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L

       isnan():
           _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
               || _XOPEN_SOURCE
               || /* Since glibc 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

       isinf():
           _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L
               || /* Since glibc 2.19: */ _DEFAULT_SOURCE
               || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE

See Also