X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmath%2Fscalbnl.c;h=08a4c58754d8a237f4441f10b1cce610ef885e43;hb=5fc1487832e16aa2119e735a388d5f36c8c139e2;hp=c605b8da3400a2e2a40d7e4f537974d2bb969f7f;hpb=97721a5508415a2f10eb068e022093811c9ff8be;p=musl diff --git a/src/math/scalbnl.c b/src/math/scalbnl.c index c605b8da..08a4c587 100644 --- a/src/math/scalbnl.c +++ b/src/math/scalbnl.c @@ -8,7 +8,7 @@ long double scalbnl(long double x, int n) #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384 long double scalbnl(long double x, int n) { - union IEEEl2bits scale; + union ldshape u; if (n > 16383) { x *= 0x1p16383L; @@ -17,7 +17,7 @@ long double scalbnl(long double x, int n) x *= 0x1p16383L; n -= 16383; if (n > 16383) - return x * 0x1p16383L; + n = 16383; } } else if (n < -16382) { x *= 0x1p-16382L; @@ -26,11 +26,11 @@ long double scalbnl(long double x, int n) x *= 0x1p-16382L; n += 16382; if (n < -16382) - return x * 0x1p-16382L; + n = -16382; } } - scale.e = 1.0; - scale.bits.exp = 0x3fff + n; - return x * scale.e; + u.f = 1.0; + u.i.se = 0x3fff + n; + return x * u.f; } #endif