X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmath%2Fscalbnl.c;h=0ed5b7fd314c033ac16ca69a1ec463a1db67ded9;hb=405a21d4cbce255eefd2b59626d8459d7d1108d4;hp=ff5db51612f2dfc922671663eb4c04492940cad6;hpb=fc04675a09587031d5daebcb877b73976890b71d;p=libm diff --git a/src/math/scalbnl.c b/src/math/scalbnl.c index ff5db51..0ed5b7f 100644 --- a/src/math/scalbnl.c +++ b/src/math/scalbnl.c @@ -18,12 +18,12 @@ #include "libm.h" -#if LD64 +#if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024 long double scalbnl(long double x, int n) { return scalbn(x, n); } -#elif LD80 || LD128 +#elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 static const long double huge = 0x1p16000L, tiny = 0x1p-16000L; @@ -38,11 +38,11 @@ long double scalbnl(long double x, int n) if (k == 0) { /* 0 or subnormal x */ if ((u.bits.manh|u.bits.manl) == 0) /* +-0 */ return x; - u.e *= 0x1p+128; + u.e *= 0x1p128; k = u.bits.exp - 128; if (n < -50000) return tiny*x; /*underflow*/ - } + } if (k == 0x7fff) /* NaN or Inf */ return x + x; k = k + n;