fpclassify
Header: <math.h>
Categorizes floating-point value arg into the following categories: zero, subnormal, normal, infinite, NAN, or implementation-defined category. The macro returns an integral value.
# Declarations
#define fpclassify(arg) /* implementation defined */
(since C99)
# Parameters
arg: floating-point value
# Return value
One of FP_INFINITE, FP_NAN, FP_NORMAL, FP_SUBNORMAL, FP_ZERO or implementation-defined type, specifying the category of arg.
# Example
#include <float.h>
#include <math.h>
#include <stdio.h>
const char* show_classification(double x)
{
switch(fpclassify(x))
{
case FP_INFINITE: return "Inf";
case FP_NAN: return "NaN";
case FP_NORMAL: return "normal";
case FP_SUBNORMAL: return "subnormal";
case FP_ZERO: return "zero";
default: return "unknown";
}
}
int main(void)
{
printf("1.0/0.0 is %s\n", show_classification(1 / 0.0));
printf("0.0/0.0 is %s\n", show_classification(0.0 / 0.0));
printf("DBL_MIN/2 is %s\n", show_classification(DBL_MIN / 2));
printf("-0.0 is %s\n", show_classification(-0.0));
printf("1.0 is %s\n", show_classification(1.0));
}