_fpclass, _fpclassl
Remonter à float.h - Index
Header File
float.h
Category
Math Routines
Prototype
int _fpclass(double d);
int _fpclassl(long double ld);
Description
Returns an integer value representing the type (class) of an IEEE real for doubles. This value contains information on the floating-point class of the argument.
_fpclassl is the long double version; it takes a long double argument and returns the type (class) of an IEEE real for long doubles.
Return Value
Returns an integer value that indicates the floating-point class of its argument. The possible values, which are listed in the table below, are defined in FLOAT.H.
_FPCLASS_UNSUP |
Unsupported IEEE format |
_FPCLASS_SNAN |
Signaling NaN |
_FPCLASS_QNAN |
Quiet NaN |
_FPCLASS_NINF |
Negative infinity |
_FPCLASS_NN |
Negative normalized non-zero |
_FPCLASS_ND |
Negative denormal |
_FPCLASS_NZ |
Negative zero (-0.0) |
_FPCLASS_PZ |
Positive zero (+0.0) |
_FPCLASS_PD |
Positive denormal |
_FPCLASS_PN |
Positive normalized non-zero |
_FPCLASS_PINF |
Positive infinity |
Example
#include <float.h> #include <stdio.h> /* Compare a and b */ int compare(double a, double b) { /* Only if both are finite. */ if (_finite(a) && _finite(b)) { if (a < b) return -1; else if (a > b) return 1; else return 0; } else { /* For infinite values check the class of the numbers */ int class_a = _fpclass(a); int class_b = _fpclass(b); /* No check the infinities and compare them */ if (class_a == _FPCLASS_NINF) { if (class_b == _FPCLASS_NINF) return 0; else return -1; } else if (class_a == _FPCLASS_PINF) { if (class_b == _FPCLASS_PINF) return 0; else return 1; } } /* Cannot find a relationship! */ return -1; }
Portability
POSIX | Win32 | ANSI C | ANSI C++ | |
---|---|---|---|---|
_fpclass |
+ |
|||
_fpclassl |
+ |