glibc/sysdeps/ieee754
Joseph Myers fa752c6981 Fix powf inaccuracy (bug 18956).
The flt-32 version of powf can be inaccurate because of bugs in the
extra-precision calculation of (x-1)/(x+1) or (x-1.5)/(x+1.5) as part
of calculating log(x) with extra precision: a constant used (as part
of adding 1 or 1.5 through integer arithmetic) is incorrect, and then
the code fails to mask a computed high part before using it in
arithmetic that relies on s_h*t_h being exactly representable.  This
patch fixes these bugs.

Tested for x86_64 and x86.  x86_64 ulps for powf removed and
regenerated to reflect reduced ulps from the increased accuracy for
existing tests.

	[BZ #18956]
	* sysdeps/ieee754/flt-32/e_powf.c (__ieee754_powf): Add 0x00400000
	not 0x0040000 for high bit of mantissa.  Mask with 0xfffff000 when
	extracting high part.
	* math/auto-libm-test-in: Add another test of pow.
	* math/auto-libm-test-out: Regenerated.
	* sysdeps/x86_64/fpu/libm-test-ulps: Update.
2015-09-26 00:27:06 +00:00
..
bits
dbl-64 Fix pow missing underflows (bug 18825). 2015-09-25 22:29:10 +00:00
flt-32 Fix powf inaccuracy (bug 18956). 2015-09-26 00:27:06 +00:00
ldbl-64-128 Make scalbn set errno (bug 6803). 2015-09-16 21:11:00 +00:00
ldbl-96 Fix hypot missing underflows (bug 18803). 2015-09-24 23:43:57 +00:00
ldbl-128 Fix pow missing underflows (bug 18825). 2015-09-25 22:29:10 +00:00
ldbl-128ibm Fix pow missing underflows (bug 18825). 2015-09-25 22:29:10 +00:00
ldbl-opt Use math_narrow_eval more consistently. 2015-09-23 18:14:57 +00:00
ieee754.h
k_standard.c
k_standardf.c
k_standardl.c
Makefile
s_lib_version.c
s_matherr.c
s_signgam.c