X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fmath%2Fscalbnl.c;h=08a4c58754d8a237f4441f10b1cce610ef885e43;hb=7acbbdfd5d6e264dcf8efa13188f0c8edabee047;hp=a5d0adba437a5e0b04f47917204f4b0118a0bc4c;hpb=8051e08e10d2b739fcfcbc6bc7466e8d77fa49f1;p=musl diff --git a/src/math/scalbnl.c b/src/math/scalbnl.c index a5d0adba..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.0L; - scale.bits.exp = 0x3fff + n; - return x * scale.e; + u.f = 1.0; + u.i.se = 0x3fff + n; + return x * u.f; } #endif