glibc/sysdeps/i386/fpu
Carlos O'Donell aba5e333d4 libm-test.inc: Fix tests where cos(PI/2) != 0.
The value of PI is never exactly PI in any floating point representation,
and the value of PI/2 is never PI/2. It is wrong to expect cos(M_PI_2l)
to return 0, instead it will return an answer that is  non-zero because
M_PI_2l doesn't round to exactly PI/2 in the type used.

That is to say that the correct answer is to do the following:
* Take PI or PI/2.
* Round to the floating point representation.
* Take the rounded value and compute an infinite precision cos or sin.
* Use the rounded result of the infinite precision cos or sin as the
  answer to the test.

I used printf to do the type rounding, and Wolfram's Alpha to do the
infinite precision cos calculations.

The following changes bring x86-64 and x86 to 1/2 ulp for two tests.
It shows that the x86 cos implementation is quite good, and that
our test are flawed.

Unfortunately given that the rounding errors are type dependent we
need to fix this for each type. No regressions on x86-64 or x86.

---

2013-04-11  Carlos O'Donell  <carlos@redhat.com>

	* math/libm-test.inc (cos_test): Fix PI/2 test.
	(sincos_test): Likewise.
	* sysdeps/x86_64/fpu/libm-test-ulps: Regenerate.
	* sysdeps/i386/fpu/libm-test-ulps: Regenerate.
2013-04-11 08:52:18 -04: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. 2013-01-02 19:05:09 +00:00
e_acoshf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
e_acoshl.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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. 2013-01-02 19:05:09 +00:00
e_atanhf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
e_atanhl.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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 Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02: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. 2013-01-02 19:05:09 +00:00
e_hypotf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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 Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_logf.S Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_logl.S Get rid of ASM_TYPE_DIRECTIVE{,_PREFIX}. 2012-08-02 21:04:29 +02:00
e_pow.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
e_powf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
e_powl.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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 Optimize libm 2011-10-12 11:27:51 -04: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. 2013-01-02 19:05:09 +00:00
fedisblxcpt.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
feenablxcpt.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
fegetenv.c Remove bp-sym.h and BP_SYM uses from C code. 2013-02-14 13:12:02 +00:00
fegetexcept.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
fegetround.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
feholdexcpt.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
fenv_private.h Fix application of the exception mask 2013-01-18 14:16:25 +05:30
fesetenv.c Remove bp-sym.h and BP_SYM uses from C code. 2013-02-14 13:12:02 +00:00
fesetround.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
feupdateenv.c Remove bp-sym.h and BP_SYM uses from C code. 2013-02-14 13:12:02 +00:00
fgetexcptflg.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
fraiseexcpt.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
fsetexcptflg.c Remove bp-sym.h and BP_SYM uses from C code. 2013-02-14 13:12:02 +00:00
ftestexcept.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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 libm-test.inc: Fix tests where cos(PI/2) != 0. 2013-04-11 08:52:18 -04:00
Makefile Update. 2003-04-29 07:18:57 +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 Refer to two GCC PRs. 2013-04-03 14:13:44 +02: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. 2013-01-02 19:05:09 +00:00
s_asinhf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_asinhl.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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. 2013-01-02 19:05:09 +00:00
s_cbrtf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_cbrtl.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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. 2013-01-02 19:05:09 +00:00
s_expm1f.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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. 2013-01-02 19:05:09 +00:00
s_fdimf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_fdiml.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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. 2013-01-02 19:05:09 +00:00
s_fmaxf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_fmaxl.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_fmin.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_fminf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_fminl.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_fpclassifyl.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_frexp.S Remove remaining bounded-pointers support from i386 .S files. 2013-02-21 22:21:52 +00:00
s_frexpf.S Remove remaining bounded-pointers support from i386 .S files. 2013-02-21 22:21:52 +00:00
s_frexpl.S Remove remaining bounded-pointers support from i386 .S files. 2013-02-21 22:21:52 +00: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. 2013-01-02 19:05:09 +00:00
s_llrintf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_llrintl.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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. 2013-01-02 19:05:09 +00:00
s_lrintf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_lrintl.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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 Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08: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. 2013-01-02 19:05:09 +00:00
s_truncf.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
s_truncl.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00: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