summary refs log tree commit diff
path: root/ChangeLog
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-11-03 19:48:53 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-11-03 19:48:53 +0000
commit5b5b04d6282df0364424c6f2c0462e5c1a4394b0 (patch)
treebef8cb91fffbf78e56f18479234abb47ce3054b2 /ChangeLog
parentfbeafedeea37e0af1984a6511018d159f5ceed6a (diff)
downloadglibc-5b5b04d6282df0364424c6f2c0462e5c1a4394b0.tar.gz
glibc-5b5b04d6282df0364424c6f2c0462e5c1a4394b0.tar.xz
glibc-5b5b04d6282df0364424c6f2c0462e5c1a4394b0.zip
Make fma use of Dekker and Knuth algorithms use round-to-nearest (bug 14796).
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog41
1 files changed, 41 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index d40c31c3eb..7b0c9d4364 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,46 @@
 2012-11-03  Joseph Myers  <joseph@codesourcery.com>
 
+	[BZ #14796]
+	* sysdeps/ieee754/dbl-64/s_fma.c (__fma): Set rounding mode to
+	FE_TONEAREST before applying Dekker multiplication and Knuth
+	addition.  Clear inexact exceptions and check for exact zero
+	results afterwards.
+	* sysdeps/ieee754/ldbl-128/s_fmal.c (__fmal): Likewise.
+	* sysdeps/ieee754/ldbl-96/s_fma.c (__fma): Likewise.
+	* sysdeps/ieee754/ldbl-96/s_fmal.c (__fmal): Likewise.
+	* math/libm-test.inc (fma_test): Add more tests.
+	(fma_test_towardzero): Likewise.
+	(fma_test_downward): Likewise.
+	(fma_test_upward): Likewise.
+	* sysdeps/generic/math_private.h (default_libc_fesetround): New
+	function.
+	(libc_fesetround): New macro.
+	(libc_fesetroundf): Likewise.
+	(libc_fesetroundl): Likewise.
+	* sysdeps/i386/fpu/fenv_private.h (libc_fesetround_sse): New
+	function.
+	(libc_fesetround_387): Likewise.
+	(libc_fesetroundf): New macro.
+	(libc_fesetround): Likewise.
+	(libc_fesetroundl): Likewise.
+	* sysdeps/sparc/fpu/fenv_private.h (libc_fesetround): New
+	function.
+	(libc_fesetroundf): New macro.
+	(libc_fesetround): Likewise.
+	(libc_fesetroundl): Likewise.
+	* include/fenv.h (feclearexcept): Add libm_hidden_proto.
+	* math/fclrexcpt.c (feclearexcept): Add libm_hidden_ver.
+	* sysdeps/i386/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_ver.
+	* sysdeps/powerpc/fpu/fclrexcpt.c (feclearexcept): Likewise.
+	* sysdeps/s390/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_def.
+	* sysdeps/sh/sh4/fpu/fclrexcpt.c (feclearexcept): Likewise.
+	* sysdeps/sparc/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_ver.
+	* sysdeps/x86_64/fpu/fclrexcpt.c (feclearexcept): Add
+	libm_hidden_def.
+
 	[BZ #3439]
 	* sysdeps/powerpc/bits/fenv.h (FE_INEXACT): Define macro to
 	integer constant usable in #if and use that to give value to enum