1 2 3 4 5 6 7 8 9 10 11 12 13 14
#include <stdint.h> #include <math.h> int __fpclassify(double __x) { union { double __d; __uint64_t __i; } __y = { __x }; int __ee = __y.__i>>52 & 0x7ff; if (!__ee) return __y.__i<<1 ? FP_SUBNORMAL : FP_ZERO; if (__ee==0x7ff) return __y.__i<<12 ? FP_NAN : FP_INFINITE; return FP_NORMAL; }