1 #include <math.h> 2 #include <stdint.h> 3 __fpclassify(double x)4int __fpclassify(double x) { 5 union { 6 double f; 7 uint64_t i; 8 } u = {x}; 9 int e = u.i >> 52 & 0x7ff; 10 if (!e) 11 return u.i << 1 ? FP_SUBNORMAL : FP_ZERO; 12 if (e == 0x7ff) 13 return u.i << 12 ? FP_NAN : FP_INFINITE; 14 return FP_NORMAL; 15 } 16