3 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
4 long double modfl(long double x, long double *iptr)
6 return modf(x, (double *)iptr);
8 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
9 #if LDBL_MANT_DIG == 64
11 #elif LDBL_MANT_DIG == 113
14 long double modfl(long double x, long double *iptr)
16 union ldshape u = {x};
17 int e = (u.i.se & 0x7fff) - 0x3fff;
22 /* no fractional part */
23 if (e >= LDBL_MANT_DIG-1) {
27 return s ? -0.0 : 0.0;
32 *iptr = s ? -0.0 : 0.0;
36 /* raises spurious inexact */
38 y = absx + TOINT - TOINT - absx;
41 return s ? -0.0 : 0.0;