glibc/sysdeps/ieee754/flt-32
Joseph Myers a84e78c8b3 Fix catan, catanh, __ieee754_logf in round-downward mode (bug 16799, bug 16800).
This patch fixes incorrect results from catan and catanh of certain
special inputs in round-downward mode (bug 16799), and incorrect
results of __ieee754_logf (+/-0) in round-downward mode (bug 16800)
that show up through catan/catanh when tested in all rounding modes,
but not directly in the testing for logf because the bug gets hidden
by the wrappers.

Both bugs involve a zero that should be +0 being -0 instead: one
computed as (1-x)*(1+x) in the catan/catanh case, and one as (x-x) in
the logf case.  The fixes ensure positive zero is used.  Testing of
catan and catanh in all rounding modes is duly enabled.

I expect there are various other bugs in special cases in __ieee754_*
functions that are normally hidden by the wrappers but would show up
for testing with -lieee (or in future with -fno-math-errno if we
replace -lieee and _LIB_VERSION with compile-time redirection to new
*_noerrno symbol names).

Tested x86_64 and x86 and ulps updated accordingly.

	[BZ #16799]
	[BZ #16800]
	* math/s_catan.c (__catan): Avoid passing -0 denominator to atan2
	with 0 numerator.
	* math/s_catanf.c (__catanf): Likewise.
	* math/s_catanh.c (__catanh): Likewise.
	* math/s_catanhf.c (__catanhf): Likewise.
	* math/s_catanhl.c (__catanhl): Likewise.
	* math/s_catanl.c (__catanl): Likewise.
	* sysdeps/ieee754/flt-32/e_logf.c (__ieee754_logf): Always divide
	by positive zero when computing -Inf result.
	* math/libm-test.inc (catan_test): Use ALL_RM_TEST.
	(catanh_test): Likewise.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2014-04-02 17:41:02 +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 Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
e_atan2f.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
e_atanhf.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
e_coshf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
e_exp2f.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
e_expf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10: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 Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01: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 Correct tinyness handling in long-double and float y0/y1. 2012-11-18 12:33:53 -08:00
e_j1f.c Correct tinyness handling in long-double and float y0/y1. 2012-11-18 12:33:53 -08:00
e_jnf.c Fix spurious jnf underflows (bug 14155). 2013-09-02 14:51:24 +00:00
e_lgammaf_r.c Fix lgammaf spurious underflow (bug 15427). 2013-09-03 15:32:54 +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 Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
math_private.h Make inline __isnan, __isinf_ns, __finite generic. 2012-03-19 06:47:43 -07:00
mpn2flt.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_asinhf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_atanf.c Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
s_cbrtf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10: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 erfc errno setting on underflow (bug 6786). 2013-12-03 16:25:18 +00:00
s_expm1f.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_fabsf.c Remove trailing whitespace. 2013-06-05 20:44:03 +00: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 notices with scripts/update-copyrights 2014-01-01 22:00:23 +10: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 notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_llrintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_llroundf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_log1pf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
s_logbf.c Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
s_lrintf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_lroundf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10: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 Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10: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 notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_scalblnf.c Use <> for math.h and math_private.h everywhere. 2012-03-09 16:09:10 -08:00
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 notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
s_sincosf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10: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 notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
t_exp2f.h Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
w_expf.c Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00