diff options
Diffstat (limited to 'lib/libm/__fpclassify.c')
| -rw-r--r-- | lib/libm/__fpclassify.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/libm/__fpclassify.c b/lib/libm/__fpclassify.c new file mode 100644 index 00000000..41332adf --- /dev/null +++ b/lib/libm/__fpclassify.c @@ -0,0 +1,16 @@ +#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; +} |
