From 03d95bd48319256bd29cfaece45919fc58bf56cc Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Thu, 12 Feb 2015 19:02:45 +0000 Subject: Fix exp2 spurious underflows (bug 16560). This patch fixes the remaining part of bug 16560, spurious underflows from exp2 of arguments close to 0 (when the result is close to 1, so should not underflow), by just using 1+x instead of a more complicated calculation when the argument is sufficiently small. Tested for x86_64, x86 and mips64. [BZ #16560] * math/e_exp2l.c [LDBL_MANT_DIG == 106] (LDBL_EPSILON): Undefine and redefine. (__ieee754_exp2l): Do not multiply small fractional parts by M_LN2l. * sysdeps/i386/fpu/e_exp2l.S (__ieee754_exp2l): Just add 1 to small argument. * sysdeps/ieee754/dbl-64/e_exp2.c (__ieee754_exp2): Likewise. * sysdeps/ieee754/flt-32/e_exp2f.c (__ieee754_exp2f): Likewise. * sysdeps/x86_64/fpu/e_exp2l.S (__ieee754_exp2l): Likewise. * math/auto-libm-test-in: Add more tests of exp2. * math/auto-libm-test-out: Regenerated. --- ChangeLog | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index d431c29f04..54da8c5fac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2015-02-12 Joseph Myers + + [BZ #16560] + * math/e_exp2l.c [LDBL_MANT_DIG == 106] (LDBL_EPSILON): Undefine + and redefine. + (__ieee754_exp2l): Do not multiply small fractional parts by + M_LN2l. + * sysdeps/i386/fpu/e_exp2l.S (__ieee754_exp2l): Just add 1 to + small argument. + * sysdeps/ieee754/dbl-64/e_exp2.c (__ieee754_exp2): Likewise. + * sysdeps/ieee754/flt-32/e_exp2f.c (__ieee754_exp2f): Likewise. + * sysdeps/x86_64/fpu/e_exp2l.S (__ieee754_exp2l): Likewise. + * math/auto-libm-test-in: Add more tests of exp2. + * math/auto-libm-test-out: Regenerated. + 2015-02-12 Rajalakshmi Srinivasaraghavan * sysdeps/powerpc/powerpc64/power7/strncpy.S (strncpy): Optimize -- cgit v1.2.3