X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmath%2Filogbl.c;h=ed9ddcbc42582ac0fb2c0ab5923a0bccb6ccd050;hb=3678e6f4bb3efec5f0c1a7c453f686c17fa9867d;hp=acaf31212a33ea394d4e1d985ebaa81db848e4c4;hpb=fc04675a09587031d5daebcb877b73976890b71d;p=libm diff --git a/src/math/ilogbl.c b/src/math/ilogbl.c index acaf312..ed9ddcb 100644 --- a/src/math/ilogbl.c +++ b/src/math/ilogbl.c @@ -1,11 +1,12 @@ #include #include "libm.h" -#if LD64 + +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 int ilogbl(long double x) { return ilogb(x); } -#elif LD80 +#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 int ilogbl(long double x) { union ldshape u = {x}; @@ -21,7 +22,7 @@ int ilogbl(long double x) } if (e == 0x7fff) /* in ld80 msb is set in inf */ - return m & ~(uint64_t)1<<63 ? FP_ILOGBNAN : INT_MAX; + return m & (uint64_t)-1>>1 ? FP_ILOGBNAN : INT_MAX; return e - 0x3fff; } #endif