diff options
author | Joseph Myers <joseph@codesourcery.com> | 2012-11-03 19:48:53 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2012-11-03 19:48:53 +0000 |
commit | 5b5b04d6282df0364424c6f2c0462e5c1a4394b0 (patch) | |
tree | bef8cb91fffbf78e56f18479234abb47ce3054b2 /ChangeLog | |
parent | fbeafedeea37e0af1984a6511018d159f5ceed6a (diff) | |
download | glibc-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-- | ChangeLog | 41 |
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 |