SYNOPSIS
       #include <math.h>
       int fpclassify(x);
       int isfinite(x);
       int isnormal(x);
       int isnan(x);
       int isinf(x);
       Compile with -std=c99; link with -lm.
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
       takes one of the following values:
       FP_NAN x is "Not a Number".
       FP_INFINITE
              x is either plus or minus 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 that it must be a normal
              floating-point number.
       The other macros provide a short answer to some standard questions.
         isfinite(x)
              returns a non-zero value if
              (fpclassify(x) != FP_NAN && fpclassify(x) != FP_INFINITE)
       isnormal(x)
              returns a non-zero value if (fpclassify(x) == FP_NORMAL)
       isnan(x)
              returns a non-zero value if (fpclassify(x) == FP_NAN)
       isinf(x)
              returns 1 if x is positive infinity, and -1  if  x  is  negative
              infinity.