glibc/sysdeps/i386/fpu
Joseph Myers 03a7091fa2 Fix x86/x86_64 expl/exp10l spurious underflows (bug 16348).
This patch fixes bug 16348, spurious underflows from x86/x86_64 expl
on arguments close to 0.  These implementations effectively use expm1
(on the fractional part of the argument) internally, so resulting in
spurious underflows when the result is very close to 1.  For arguments
small enough that the round-to-nearest correct result is 1, this patch
uses 1+x instead.

These implementations are also used for exp10l and so the patch fixes
similar issues there (the 0x1p-67 threshold being small enough to be
correct for exp10l as well as expl).  But because of spurious
underflows in other exp10 implementations (bug 16560), the tests
aren't added for exp10 at this point - they can be added when the
other exp10 parts of that bug are fixed.

Tested x86_64 and x86; no ulps updates needed.

	[BZ #16348]
	* sysdeps/i386/fpu/e_expl.S (IEEE754_EXPL) [!USE_AS_EXPM1L]: Use
	1+x for argument with exponent below -67.
	* sysdeps/x86_64/fpu/e_expl.S (IEEE754_EXPL) [!USE_AS_EXPM1L]:
	Likewise.
	* math/auto-libm-test-in: Add more tests of exp.
	* math/auto-libm-test-out: Regenerated.
2014-03-27 18:41:14 +00:00
..
doasin.c
e_acos.S Fix x86 acos near 1 (bug 13942). 2012-04-30 18:56:39 +00:00
e_acosf.S Fix acos (-1) in round-downwards mode on x86 (bug 14034). 2012-04-30 09:38:06 +00:00
e_acosh.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_acoshf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_acoshl.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_acosl.c Fix x86 acos near 1 (bug 13942). 2012-04-30 18:56:39 +00:00
e_asin.S Fix x86 acos near 1 (bug 13942). 2012-04-30 18:56:39 +00:00
e_asinf.S Optimize libm 2011-10-12 11:27:51 -04:00
e_atan2.S Optimize libm 2011-10-12 11:27:51 -04:00
e_atan2f.S Optimize libm 2011-10-12 11:27:51 -04:00
e_atan2l.c Optimize libm 2011-10-12 11:27:51 -04:00
e_atanh.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_atanhf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_atanhl.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_exp2.S Optimize libm 2011-10-12 11:27:51 -04:00
e_exp2f.S Optimize libm 2011-10-12 11:27:51 -04:00
e_exp2l.S Optimize libm 2011-10-12 11:27:51 -04:00
e_exp10.S Optimize libm 2011-10-12 11:27:51 -04:00
e_exp10f.S Optimize libm 2011-10-12 11:27:51 -04:00
e_exp10l.S Fix exp10 inaccuracy and exceptions (bugs 13884, 13914). 2012-05-06 18:23:44 +00:00
e_exp.S Optimize exp 2011-10-15 20:22:59 -04:00
e_expf.S Optimize exp 2011-10-15 20:22:59 -04:00
e_expl.S Fix x86/x86_64 expl/exp10l spurious underflows (bug 16348). 2014-03-27 18:41:14 +00:00
e_fmod.S Optimize libm 2011-10-12 11:27:51 -04:00
e_fmodf.S Optimize libm 2011-10-12 11:27:51 -04:00
e_fmodl.c Optimize libm 2011-10-12 11:27:51 -04:00
e_hypot.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_hypotf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_ilogb.S Remove useless __ilogb*_finite aliases 2012-04-18 00:40:13 +02:00
e_ilogbf.S Remove useless __ilogb*_finite aliases 2012-04-18 00:40:13 +02:00
e_ilogbl.S Remove useless __ilogb*_finite aliases 2012-04-18 00:40:13 +02:00
e_log2.S Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_log2f.S Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_log2l.S Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_log10.S Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_log10f.S Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_log10l.S Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_log.S Fix log (1) in round-downward mode (bug 16731). 2014-03-21 18:13:58 +00:00
e_logf.S Fix log (1) in round-downward mode (bug 16731). 2014-03-21 18:13:58 +00:00
e_logl.S Fix log (1) in round-downward mode (bug 16731). 2014-03-21 18:13:58 +00:00
e_pow.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_powf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_powl.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_rem_pio2.c
e_remainder.S Optimize libm 2011-10-12 11:27:51 -04:00
e_remainderf.S Optimize libm 2011-10-12 11:27:51 -04:00
e_remainderl.S Optimize libm 2011-10-12 11:27:51 -04:00
e_scalb.S Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_scalbf.S Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_scalbl.S Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_sqrt.S Fix x86 sqrt rounding (bug 14032). 2013-11-29 16:31:16 +00:00
e_sqrtf.S Optimize libm 2011-10-12 11:27:51 -04:00
e_sqrtl.c Optimize libm 2011-10-12 11:27:51 -04:00
fclrexcpt.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fedisblxcpt.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
feenablxcpt.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fegetenv.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fegetexcept.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fegetround.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
feholdexcpt.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fenv_private.h Set/restore rounding mode only when needed 2013-06-12 10:36:48 +05:30
fesetenv.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fesetround.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
feupdateenv.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fgetexcptflg.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fraiseexcpt.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
fsetexcptflg.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
ftestexcept.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
halfulp.c
Implies Use x86_64 fpu/bits/fenv.h for i386 and x86_64 2012-06-06 10:13:19 -07:00
k_rem_pio2l.c
libm-test-ulps Relax gen-auto-libm-tests may-underflow rules, test log1p in all rounding modes. 2014-03-25 12:26:06 +00:00
math_private.h Optimize private 387 fenv access; share code between i386 and x86_64. 2012-03-19 06:51:39 -07:00
math-tests.h Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
mpatan2.c
mpatan.c
mpexp.c
mplog.c
mpsqrt.c
s_asinh.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_asinhf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_asinhl.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_atan.S
s_atanf.S
s_atanl.c
s_cbrt.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_cbrtf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_cbrtl.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_ceil.S
s_ceilf.S
s_ceill.S
s_copysign.S
s_copysignf.S
s_copysignl.S
s_expm1.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_expm1f.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_expm1l.S Fix x86/x86_64 expm1l inaccuracy and exceptions (bugs 13885, 13923). 2012-05-07 19:13:08 +00:00
s_fabs.S
s_fabsf.S
s_fabsl.S
s_fdim.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_fdimf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_fdiml.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_finite.S
s_finitef.S
s_finitel.S
s_floor.S
s_floorf.S
s_floorl.S
s_fmax.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_fmaxf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_fmaxl.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_fmin.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_fminf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_fminl.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_fpclassifyl.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_frexp.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_frexpf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_frexpl.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_isinfl.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_isnanl.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_llrint.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_llrintf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_llrintl.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_log1p.S Remove __ELF__ conditionals 2012-02-07 00:41:11 +01:00
s_log1pf.S Remove __ELF__ conditionals 2012-02-07 00:41:11 +01:00
s_log1pl.S Remove __ELF__ conditionals 2012-02-07 00:41:11 +01:00
s_logb.S
s_logbf.S
s_logbl.c
s_lrint.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_lrintf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_lrintl.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_nearbyint.S
s_nearbyintf.S
s_nearbyintl.S
s_nextafterl.c Fix nextafter overflow in non-default rounding modes (bug 16677). 2014-03-11 22:24:00 +00:00
s_nexttoward.c Fix nexttoward bugs (bugs 2550, 2570). 2012-05-01 15:37:43 +00:00
s_nexttowardf.c Fix nexttoward bugs (bugs 2550, 2570). 2012-05-01 15:37:43 +00:00
s_remquo.S Remove remaining bounded-pointers support from i386 .S files. 2013-02-21 22:21:52 +00:00
s_remquof.S Remove remaining bounded-pointers support from i386 .S files. 2013-02-21 22:21:52 +00:00
s_remquol.S Remove remaining bounded-pointers support from i386 .S files. 2013-02-21 22:21:52 +00:00
s_rint.S
s_rintf.S
s_rintl.c
s_scalbln.c
s_scalblnf.c
s_scalblnl.c
s_scalbn.S
s_scalbnf.S
s_scalbnl.S
s_significand.S
s_significandf.S
s_significandl.c
s_trunc.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_truncf.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_truncl.S Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
slowexp.c
slowpow.c
t_exp.c
Versions
w_sqrt.c Fix x86 sqrt rounding (bug 14032). 2013-11-29 16:31:16 +00:00