#include <math.h> | |
#include <stdint.h> | |
int __fpclassify(double x) { | |
union { | |
double f; | |
uint64_t i; | |
} u = {x}; | |
int e = u.i >> 52 & 0x7ff; | |
if (!e) | |
return u.i << 1 ? FP_SUBNORMAL : FP_ZERO; | |
if (e == 0x7ff) | |
return u.i << 12 ? FP_NAN : FP_INFINITE; | |
return FP_NORMAL; | |
} |