diff options
Diffstat (limited to 'lib/libm/__fpclassifyf.c')
| -rw-r--r-- | lib/libm/__fpclassifyf.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/libm/__fpclassifyf.c b/lib/libm/__fpclassifyf.c new file mode 100644 index 00000000..c8fc7585 --- /dev/null +++ b/lib/libm/__fpclassifyf.c @@ -0,0 +1,16 @@ +#include <math.h> +#include <stdint.h> + +int __fpclassifyf(float x) +{ + union { + float f; + uint32_t i; + } u = { x }; + int e = u.i >> 23 & 0xff; + if (!e) + return u.i << 1 ? FP_SUBNORMAL : FP_ZERO; + if (e == 0xff) + return u.i << 9 ? FP_NAN : FP_INFINITE; + return FP_NORMAL; +} |
