1 #include "libm.h"
2 
3 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
frexpl(long double x,int * e)4 long double frexpl(long double x, int* e) {
5     return frexp(x, e);
6 }
7 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
frexpl(long double x,int * e)8 long double frexpl(long double x, int* e) {
9     union ldshape u = {x};
10     int ee = u.i.se & 0x7fff;
11 
12     if (!ee) {
13         if (x) {
14             x = frexpl(x * 0x1p120, e);
15             *e -= 120;
16         } else
17             *e = 0;
18         return x;
19     } else if (ee == 0x7fff) {
20         return x;
21     }
22 
23     *e = ee - 0x3ffe;
24     u.i.se &= 0x8000;
25     u.i.se |= 0x3ffe;
26     return u.f;
27 }
28 #endif
29