Commit 29717168 authored by Alexandre Julliard's avatar Alexandre Julliard

include: Define fpclassify().

parent da8176df
...@@ -251,11 +251,22 @@ static const union { ...@@ -251,11 +251,22 @@ static const union {
#define FP_ILOGB0 (-0x7fffffff - _C2) #define FP_ILOGB0 (-0x7fffffff - _C2)
#define FP_ILOGBNAN 0x7fffffff #define FP_ILOGBNAN 0x7fffffff
#if _MSVCR_VER >= 120
_ACRTIMP short __cdecl _dclass(double); _ACRTIMP short __cdecl _dclass(double);
_ACRTIMP short __cdecl _fdclass(float); _ACRTIMP short __cdecl _fdclass(float);
_ACRTIMP int __cdecl _dsign(double); _ACRTIMP int __cdecl _dsign(double);
_ACRTIMP int __cdecl _fdsign(float); _ACRTIMP int __cdecl _fdsign(float);
#define fpclassify(x) (sizeof(x) == sizeof(float) ? _fdclass(x) : _dclass(x))
#define signbit(x) (sizeof(x) == sizeof(float) ? _fdsign(x) : _dsign(x))
#define isinf(x) (fpclassify(x) == FP_INFINITE)
#define isnan(x) (fpclassify(x) == FP_NAN)
#define isnormal(x) (fpclassify(x) == FP_NORMAL)
#define isfinite(x) (fpclassify(x) <= 0)
#else
static inline int __isnanf(float x) static inline int __isnanf(float x)
{ {
union { float x; unsigned int i; } u = { x }; union { float x; unsigned int i; } u = { x };
...@@ -303,6 +314,8 @@ static inline int __signbit(double x) ...@@ -303,6 +314,8 @@ static inline int __signbit(double x)
#define signbit(x) (sizeof(x) == sizeof(float) ? __signbitf(x) : __signbit(x)) #define signbit(x) (sizeof(x) == sizeof(float) ? __signbitf(x) : __signbit(x))
#define isfinite(x) (!isinf(x) && !isnan(x)) #define isfinite(x) (!isinf(x) && !isnan(x))
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment