3 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
4 int ilogbl(long double x)
8 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
9 int ilogbl(long double x)
11 union ldshape u = {x};
12 uint64_t m = u.bits.m;
19 for (e = -0x3fff+1; m < (uint64_t)1<<63; e--, m<<=1);
23 /* in ld80 msb is set in inf */
24 return m & (uint64_t)-1>>1 ? FP_ILOGBNAN : INT_MAX;