1 #include <math.h>
2 #include <stdint.h>
3 
frexpf(float x,int * e)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 }
24