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