glibc/sysdeps/ieee754/dbl-64
Joseph Myers b59549574e Fix exp2, exp2f spurious underflows (bug 18219).
The dbl-64 and flt-32 implementations of exp2 functions produce
spurious underflow exceptions.  The underlying reason is the same in
both cases: the computation works as (2^a - 1)*2^b + 2^b for suitably
chosen a and b, where a has small magnitude so 2^a - 1 can be computed
with a low-degree polynomial approximation, and (2^a - 1)*2^b can
underflow even when the final result does not.  This patch fixes this
by adjusting the threshold for when scaling is used to avoid
intermediate underflow so it works for any possible value of a where
the final result would not underflow.

Tested for x86_64 and x86.

	[BZ #18219]
	* sysdeps/ieee754/dbl-64/e_exp2.c (__ieee754_exp2): Reduce
	threshold on absolute value of exponent for which scaling is used.
	* sysdeps/ieee754/flt-32/e_exp2f.c (__ieee754_exp2f): Likewise.
	* math/auto-libm-test-in: Add more tests of exp2.
	* math/auto-libm-test-out: Regenerated.
2015-06-23 14:35:18 +00:00
..
wordsize-64 Fix expm1 missing underflows (bug 16353). 2015-06-22 21:06:19 +00:00
asincos.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atnat2.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
atnat.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
branred.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
branred.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dbl2mpn.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dla.h Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
doasin.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
doasin.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dosincos.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dosincos.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
e_acos.c
e_acosh.c
e_asin.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
e_atan2.c Fix dbl-64 atan2 in non-default rounding modes (bug 18210, bug 18211). 2015-04-08 17:32:17 +00:00
e_atanh.c Fix atanhl missing underflows (bug 16352). 2015-05-15 22:07:57 +00:00
e_cosh.c
e_exp2.c Fix exp2, exp2f spurious underflows (bug 18219). 2015-06-23 14:35:18 +00:00
e_exp10.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
e_exp.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
e_fmod.c
e_gamma_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
e_hypot.c
e_ilogb.c
e_j0.c Avoid uninitialized warnings in Bessel functions. 2015-02-26 21:49:19 +00:00
e_j1.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
e_jn.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
e_lgamma_r.c Fix lgamma implementations for -Wuninitialized. 2015-05-21 23:44:33 +00:00
e_log2.c
e_log10.c
e_log.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
e_pow.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
e_rem_pio2.c
e_remainder.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
e_sinh.c
e_sqrt.c Fix libm fegetround namespace (bug 17748). 2015-01-02 20:44:42 +00:00
gamma_product.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
gamma_productf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
halfulp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
k_cos.c
k_rem_pio2.c
k_sin.c
k_tan.c
Makefile powerpc: Fix incorrect results for pow when using FMA 2015-03-10 09:38:54 -04:00
MathLib.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpa-arch.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpa.c Fix sysdeps/ieee754/dbl-64/mpa.c for -Wuninitialized. 2015-05-21 23:05:45 +00:00
mpa.h Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
mpatan2.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpatan.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
mpatan.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpexp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mplog.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpn2dbl.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpsqrt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mpsqrt.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mptan.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mydefs.h Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
powtwo.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
root.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_asinh.c Fix asinh missing underflows (bug 16350). 2015-06-18 23:27:41 +00:00
s_atan.c Fix dbl-64 atan in non-default rounding modes (bug 18197). 2015-04-08 17:14:12 +00:00
s_cbrt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_ceil.c
s_copysign.c
s_cos.c
s_erf.c
s_expm1.c Fix expm1 missing underflows (bug 16353). 2015-06-22 21:06:19 +00:00
s_fabs.c 2015-05-28 Wilco Dijkstra <wdijkstr@arm.com> 2015-05-28 11:42:55 +01:00
s_finite.c
s_floor.c
s_fma.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fmaf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_fpclassify.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_frexp.c
s_isinf_ns.c
s_isinf.c
s_isnan.c
s_issignaling.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_llrint.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_llround.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_log1p.c Fix log1p missing underflows (bug 16339). 2015-05-14 23:38:07 +00:00
s_logb.c
s_lrint.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_lround.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_modf.c
s_nearbyint.c
s_nexttoward.c
s_remquo.c Fix sign of remquo zero remainder in round-downward mode (bug 17987). 2015-02-17 00:41:50 +00:00
s_rint.c
s_round.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_scalbln.c
s_scalbn.c
s_signbit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_sin.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
s_sincos.c Fix sincos errno setting (bug 15467). 2015-02-11 23:17:25 +00:00
s_tan.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_tanh.c
s_trunc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sincos32.c Remove various ABS macros and replace uses with fabs (or in one case abs) 2015-05-15 11:04:40 +00:00
sincos32.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sincostab.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
slowexp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
slowpow.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
t_exp2.h
t_exp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
uasncs.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
uatan.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
uexp.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
uexp.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ulog.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ulog.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
upow.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
upow.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
urem.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
uroot.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
usncs.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
utan.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
utan.tbl Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
w_exp.c This patch renames all uses of __isinf*, __isnan*, __finite* and __signbit* to use standard C99 macros. This has no effect on generated code. 2015-06-03 15:41:36 +01:00
x2y2m1.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
x2y2m1f.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00