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