]> git.proxmox.com Git - wasi-libc.git/blob - libc-top-half/musl/src/math/frexpf.c
WASI libc prototype implementation.
[wasi-libc.git] / libc-top-half / musl / src / math / frexpf.c
1 #include <math.h>
2 #include <stdint.h>
3
4 float frexpf(float x, int *e)
5 {
6 union { float f; uint32_t i; } y = { x };
7 int ee = y.i>>23 & 0xff;
8
9 if (!ee) {
10 if (x) {
11 x = frexpf(x*0x1p64, e);
12 *e -= 64;
13 } else *e = 0;
14 return x;
15 } else if (ee == 0xff) {
16 return x;
17 }
18
19 *e = ee - 0x7e;
20 y.i &= 0x807ffffful;
21 y.i |= 0x3f000000ul;
22 return y.f;
23 }