glibc/sysdeps/ieee754/flt-32
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
..
e_acosf.c Fix acosf underflow (bug 14153). 2012-05-25 11:07:07 +00:00
e_acoshf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
e_asinf.c Fix asin missing underflows (bug 16351). 2015-02-26 17:18:54 +00:00
e_atan2f.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
e_atanhf.c Fix atanhl missing underflows (bug 16352). 2015-05-15 22:07:57 +00:00
e_coshf.c Fix cosh spurious underflows from expm1 (bug 16354), inaccurate results near 0 (bug 17061). 2014-06-23 20:20:10 +00:00
e_exp2f.c Fix exp2, exp2f spurious underflows (bug 18219). 2015-06-23 14:35:18 +00:00
e_expf.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_fmodf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
e_gammaf_r.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
e_hypotf.c Fix hypotf overflow/underflow by using double precision instead of scaling. 2012-03-13 18:08:58 -07:00
e_ilogbf.c Remove useless __ilogb*_finite aliases 2012-04-18 00:40:13 +02:00
e_j0f.c Avoid uninitialized warnings in Bessel functions. 2015-02-26 21:49:19 +00:00
e_j1f.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_jnf.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_lgammaf_r.c Fix lgamma implementations for -Wuninitialized. 2015-05-21 23:44:33 +00:00
e_log2f.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
e_log10f.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
e_logf.c Fix catan, catanh, __ieee754_logf in round-downward mode (bug 16799, bug 16800). 2014-04-02 17:41:02 +00:00
e_powf.c Fix spurious underflows from pow with results close to 1 (bug 14811). 2012-11-07 13:03:31 +00:00
e_rem_pio2f.c Fix leading whitespaces. 2013-06-06 20:36:07 +02:00
e_remainderf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
e_sinhf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
e_sqrtf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
k_cosf.c Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
k_rem_pio2f.c Fix leading whitespaces. 2013-06-06 20:36:07 +02:00
k_sinf.c Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
k_tanf.c Fix tanf spurious underflows (bug 18221). 2015-05-15 17:47:29 +00:00
math_private.h Make inline __isnan, __isinf_ns, __finite generic. 2012-03-19 06:47:43 -07:00
mpn2flt.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_asinhf.c Fix asinh missing underflows (bug 16350). 2015-06-18 23:27:41 +00:00
s_atanf.c Fix atanf spurious underflows (bug 18196). 2015-05-14 23:51:09 +00:00
s_cbrtf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_ceilf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_copysignf.c Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
s_cosf.c Add optimized sinf and cosf routines for x86 and x86-64 2012-09-03 15:32:13 +02:00
s_erff.c Fix erfcf spurious underflows (bug 18217). 2015-05-15 00:16:10 +00:00
s_expm1f.c Fix expm1 missing underflows (bug 16353). 2015-06-22 21:06:19 +00:00
s_fabsf.c 2015-05-28 Wilco Dijkstra <wdijkstr@arm.com> 2015-05-28 11:42:55 +01:00
s_finitef.c PowerPC: multiarch finite/finitef for PowerPC32 2013-12-06 05:47:03 -06:00
s_floorf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_fpclassifyf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_frexpf.c Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
s_isinf_nsf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_isinff.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_isnanf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_issignalingf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_llrintf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_llroundf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_log1pf.c Fix log1p missing underflows (bug 16339). 2015-05-14 23:38:07 +00:00
s_logbf.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
s_lrintf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_lroundf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_modff.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_nearbyintf.c Fix nearbyint scheduling of arithmetic past fesetenv (bug 15490). 2013-05-19 18:40:25 +00:00
s_nextafterf.c Fix nextafter overflow in non-default rounding modes (bug 16677). 2014-03-11 22:24:00 +00:00
s_remquof.c Fix sign of remquo zero remainder in round-downward mode (bug 17987). 2015-02-17 00:41:50 +00:00
s_rintf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_roundf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_scalblnf.c [BZ #6803] Set errno for scalbln, scalbn 2014-06-20 07:48:20 +05:30
s_scalbnf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_signbitf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
s_sincosf.c Fix sincos errno setting (bug 15467). 2015-02-11 23:17:25 +00:00
s_sinf.c Add optimized sinf and cosf routines for x86 and x86-64 2012-09-03 15:32:13 +02:00
s_tanf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_tanhf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_truncf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
t_exp2f.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
w_expf.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