glibc/sysdeps/ieee754/flt-32
Joseph Myers e4e52ff059 Improve float range reduction accuracy near pi/2 (bug 21094).
Bug 21094 reports 3ulp errors of cosf and tanf for certain arguments
near pi/2 arising from the use of an insufficiently accurate range
reduction.  (To be clear, this is a quality-of-implementation issue
relating to the apparent intent of those particular cosf and tanf
implementations; 3ulp is within the general glibc accuracy goals, so
not inherently a bug.)

This patch fixes that error by making a wider range of cases use the
existing more accurate range reduction for arguments close to pi/2.
The wider range of values is still narrow enough for the "z -=
pio2_2;" in the more accurate case to be exact, as the code expects.

Tested for x86_64, x86 and mips64; no ulps updates needed (but at
least on mips64, the larger ulps were seen if the tests were added
without the substantive fix).

	[BZ #21094]
	* sysdeps/ieee754/flt-32/e_rem_pio2f.c (__ieee754_rem_pio2f): Use
	24+24+24-bit pi for wider range of values around pi/2.
	* math/auto-libm-test-in: Add more tests of cos and tan.
	* math/auto-libm-test-out-cos: Regenerated.
	* math/auto-libm-test-out-tan: Likewise.
2017-03-15 22:00:54 +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 Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +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 Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_coshf.c Avoid excess range overflowing results from cosh, sinh, lgamma (bug 18980). 2015-09-18 20:00:48 +00:00
e_exp2f.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
e_expf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00: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. 2017-01-01 00:14:16 +00:00
e_hypotf.c Fix hypot sNaN handling (bug 20940). 2016-12-07 01:16:36 +00:00
e_ilogbf.c Remove useless __ilogb*_finite aliases 2012-04-18 00:40:13 +02:00
e_j0f.c Fix y0 and y1 exception handling for zero input [BZ #21134] 2017-02-15 10:30:59 -02:00
e_j1f.c Fix y0 and y1 exception handling for zero input [BZ #21134] 2017-02-15 10:30:59 -02:00
e_jnf.c Fix j1, jn missing errno setting on underflow (bug 18611). 2015-10-23 21:37:33 +00:00
e_lgammaf_r.c Narrowing the visibility of libc-internal.h even further. 2017-03-01 20:33:46 -05:00
e_log2f.c Fix lgamma*, log10* and log2* results [BZ #21171] 2017-02-17 09:07:57 -02:00
e_log10f.c Fix lgamma*, log10* and log2* results [BZ #21171] 2017-02-17 09:07:57 -02: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 powf inaccuracy (bug 21112). 2017-02-07 17:15:47 +00:00
e_rem_pio2f.c Improve float range reduction accuracy near pi/2 (bug 21094). 2017-03-15 22:00:54 +00:00
e_remainderf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
e_sinhf.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00: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 Narrowing the visibility of libc-internal.h even further. 2017-03-01 20:33:46 -05:00
k_sinf.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
k_tanf.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
lgamma_negf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
lgamma_productf.c Fix lgamma (negative) inaccuracy (bug 2542, bug 2543, bug 2558). 2015-09-10 22:27:58 +00:00
mpn2flt.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_asinhf.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_atanf.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_cbrtf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_ceilf.c Do not raise "inexact" from generic ceil (bug 15479). 2016-05-24 17:42:10 +00:00
s_copysignf.c Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
s_cosf.c Fix several build failures with GCC6 due to unused static variables. 2015-09-18 20:42:54 +01:00
s_erff.c Work around powerpc32 integer 0 converting to -0 (bug 887, bug 19049, bug 19050). 2015-10-05 17:46:50 +00:00
s_expm1f.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_fabsf.c 2015-05-28 Wilco Dijkstra <wdijkstr@arm.com> 2015-05-28 11:42:55 +01:00
s_finitef.c Reduce number of constants in __finite* (bug 15384). 2015-09-17 16:47:14 +00:00
s_floorf.c Do not raise "inexact" from generic floor (bug 15479). 2016-05-24 17:44:46 +00:00
s_fpclassifyf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_frexpf.c Fix frexp (NaN) (bug 20250). 2016-06-13 17:27:19 +00:00
s_fromfpf_main.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_fromfpf.c Add fromfp functions. 2016-12-31 00:40:59 +00:00
s_fromfpxf.c Add fromfp functions. 2016-12-31 00:40:59 +00:00
s_getpayloadf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00: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. 2017-01-01 00:14:16 +00:00
s_llrintf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_llroundf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_log1pf.c Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_logbf.c Work around powerpc32 integer 0 converting to -0 (bug 887, bug 19049, bug 19050). 2015-10-05 17:46:50 +00:00
s_lrintf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_lroundf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +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 Make nextafter, nexttoward set errno (bug 6799). 2015-11-02 18:54:19 +00:00
s_nextupf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_remquof.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_rintf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_roundevenf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_roundf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_scalblnf.c [BZ #6803] Set errno for scalbln, scalbn 2014-06-20 07:48:20 +05:30
s_scalbnf.c Make scalbn set errno (bug 6803). 2015-09-16 21:11:00 +00:00
s_setpayloadf_main.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_setpayloadf.c Add setpayload, setpayloadf, setpayloadl. 2016-11-19 00:16:28 +00:00
s_setpayloadsigf.c Add setpayloadsig, setpayloadsigf, setpayloadsigl. 2016-11-24 23:56:48 +00:00
s_signbitf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_sincosf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +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 Refactor code forcing underflow exceptions. 2015-09-23 22:42:30 +00:00
s_totalorderf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_totalordermagf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_truncf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
s_ufromfpf.c Add fromfp functions. 2016-12-31 00:40:59 +00:00
s_ufromfpxf.c Add fromfp functions. 2016-12-31 00:40:59 +00:00
t_exp2f.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
w_expf_compat.c Move w_exp to libm-compat-call-auto 2017-02-08 17:44:20 -02:00