glibc/sysdeps/i386/fpu
Joseph Myers b376a11a19 Fix dbl-64 exp overflow/underflow in non-default rounding modes (bug 16284).
The dbl-64 version of exp needs round-to-nearest mode for its internal
computations, but that has the consequence of inappropriate
overflowing and underflowing results in other rounding modes.  This
patch fixes this by recomputing the relevant results in cases where
the round-to-nearest result overflows to infinity or underflows to
zero (most of the diffs are actually just consequent reindentation).
Tests are enabled in all rounding modes for complex functions using
exp - but not for cexp because it turns out there are bugs causing
spurious underflows for cexp for some tests, which will need to be
fixed separately (I suspect ccos ccosh csin csinh ctan ctanh have
similar bugs, just not shown by the present set of test inputs).

Tested x86_64 and x86 and ulps updated accordingly.

	[BZ #16284]
	* sysdeps/ieee754/dbl-64/e_exp.c (__ieee754_exp): Use original
	rounding mode to recompute results that overflow to infinity or
	underflow to zero.
	* math/auto-libm-test-in: Don't mark tests as expected to fail for
	bug 16284.
	* math/auto-libm-test-out: Regenerated.
	* math/libm-test.inc (ccos_test): Use ALL_RM_TEST.
	(ccosh_test): Likewise.
	(csin_test_data): Use plus_oflow.
	(csin_test): Use ALL_RM_TEST.
	(csinh_test_data): Use plus_oflow.
	(csinh_test): Use ALL_RM_TEST.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2014-03-24 12:18:45 +00:00
..
doasin.c Update. 2001-03-12 00:04:52 +00:00
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 / expl10l wild results in directed rounding modes (bug 16356). 2013-12-21 13:07:16 +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 Update. 1999-07-14 00:54:57 +00:00
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 Update. 2001-03-12 00:04:52 +00:00
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 Update. 1999-07-14 00:54:57 +00:00
libm-test-ulps Fix dbl-64 exp overflow/underflow in non-default rounding modes (bug 16284). 2014-03-24 12:18:45 +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 Update. 2001-03-12 00:04:52 +00:00
mpatan.c Update. 2001-03-12 00:04:52 +00:00
mpexp.c Update. 2001-03-12 00:04:52 +00:00
mplog.c Update. 2001-03-12 00:04:52 +00:00
mpsqrt.c Update. 2001-03-12 00:04:52 +00:00
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 Update. 1999-07-14 00:54:57 +00:00
s_atanf.S Update. 1999-07-14 00:54:57 +00:00
s_atanl.c Update. 2001-05-06 17:03:45 +00:00
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 Update. 1999-07-14 00:54:57 +00:00
s_ceilf.S Update. 1999-07-14 00:54:57 +00:00
s_ceill.S Update. 1999-07-14 00:54:57 +00:00
s_copysign.S Update. 1999-07-14 00:54:57 +00:00
s_copysignf.S Update. 1999-07-14 00:54:57 +00:00
s_copysignl.S Update. 1999-07-14 00:54:57 +00:00
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 Update. 2002-04-03 00:36:12 +00:00
s_fabsf.S Update. 2002-04-03 00:36:12 +00:00
s_fabsl.S Update. 2002-04-03 00:36:12 +00:00
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 Update. 2002-09-10 01:40:26 +00:00
s_finitef.S Update. 2002-09-10 01:40:26 +00:00
s_finitel.S Update. 2002-09-10 01:40:26 +00:00
s_floor.S Update. 1999-07-14 00:54:57 +00:00
s_floorf.S Update. 1999-07-14 00:54:57 +00:00
s_floorl.S Update. 1999-07-14 00:54:57 +00:00
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 Update. 1999-07-14 00:54:57 +00:00
s_logbf.S Update. 1999-07-14 00:54:57 +00:00
s_logbl.c Update. 2001-09-18 14:13:20 +00:00
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 * intl/Makefile (tst-gettext[45].out): Pass also $(run-program-prefix) 2005-05-04 17:58:13 +00:00
s_nearbyintf.S * intl/Makefile (tst-gettext[45].out): Pass also $(run-program-prefix) 2005-05-04 17:58:13 +00:00
s_nearbyintl.S * intl/Makefile (tst-gettext[45].out): Pass also $(run-program-prefix) 2005-05-04 17:58:13 +00:00
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 Update. 1999-07-14 00:54:57 +00:00
s_rintf.S Update. 1999-07-14 00:54:57 +00:00
s_rintl.c Update. 2001-09-18 14:13:20 +00:00
s_scalbln.c Update. 1999-07-14 00:54:57 +00:00
s_scalblnf.c Update. 1999-07-14 00:54:57 +00:00
s_scalblnl.c Update. 1999-07-14 00:54:57 +00:00
s_scalbn.S Update. 1999-07-14 00:54:57 +00:00
s_scalbnf.S Update. 1999-07-14 00:54:57 +00:00
s_scalbnl.S Update. 1999-07-14 00:54:57 +00:00
s_significand.S Update. 1999-07-14 00:54:57 +00:00
s_significandf.S Update. 1999-07-14 00:54:57 +00:00
s_significandl.c (__significandl): Really return significand and not the exponent. 2003-01-07 07:42:11 +00:00
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 Update. 2001-03-12 00:04:52 +00:00
slowpow.c Update. 2001-03-12 00:04:52 +00:00
t_exp.c Update. 1999-07-14 00:54:57 +00:00
Versions Update. 2000-06-14 00:55:24 +00:00
w_sqrt.c Fix x86 sqrt rounding (bug 14032). 2013-11-29 16:31:16 +00:00