glibc/sysdeps/x86_64
Joseph Myers f88acd39da Fix x86/x86_64 expm1 inaccuracy near 0 in directed rounding modes (bug 16293).
Bug 16293 is inaccuracy of x86/x86_64 versions of expm1, near 0 in
directed rounding modes, that arises from frndint rounding the
exponent to 1 or -1 instead of 0, resulting in large cancellation
error.  This inaccuracy in turn affects other functions such as sinh
that use expm1.  This patch fixes the problem by setting
round-to-nearest mode temporarily around the affected calls to
frndint.  I don't think this is needed for other uses of frndint, such
as in exp itself, as only for expm1 is the cancellation error
significant.

Tested x86_64 and x86 and ulps updated accordingly.

	* sysdeps/i386/fpu/e_expl.S (IEEE754_EXPL) [USE_AS_EXPM1L]: Set
	round-to-nearest mode when using frndint.
	* sysdeps/i386/fpu/s_expm1.S (__expm1): Likewise.
	* sysdeps/i386/fpu/s_expm1f.S (__expm1f): Likewise.
	* sysdeps/x86_64/fpu/e_expl.S (IEEE754_EXPL) [USE_AS_EXPM1L]:
	Likewise.
	* math/auto-libm-test-in: Add more tests of expm1.  Do not expect
	sinh test to fail.
	* math/auto-libm-test-out: Regenerated.
	* math/libm-test.inc (TEST_COND_x86_64): Remove macro.
	(TEST_COND_x86): Likewise.
	(expm1_tonearest_test_data): New array.
	(expm1_test_tonearest): New function.
	(expm1_towardzero_test_data): New array.
	(expm1_test_towardzero): New function.
	(expm1_downward_test_data): New array.
	(expm1_test_downward): New function.
	(expm1_upward_test_data): New array.
	(expm1_test_upward): New function.
	(main): Run the new test functions.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2013-12-19 13:36:10 +00:00
..
64 Convert WORDSIZE[32|64]/ld entries to abi-variants 2012-05-30 08:33:26 -07:00
bits Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
fpu Fix x86/x86_64 expm1 inaccuracy near 0 in directed rounding modes (bug 16293). 2013-12-19 13:36:10 +00:00
multiarch Update file name in x86_64 ifunc list 2013-12-16 13:00:39 +10:00
x32 Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
____longjmp_chk.S
__longjmp.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
_mcount.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
abort-instr.h
add_n.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
addmul_1.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
backtrace.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
bsd-_setjmp.S Remove bounded-pointers handling from x86_64 assembly sources. 2013-02-17 21:57:26 +00:00
bsd-setjmp.S Remove bounded-pointers handling from x86_64 assembly sources. 2013-02-17 21:57:26 +00:00
bzero.S
cacheinfo.c Change __x86_64 prefix in cache size to __x86 2013-01-05 16:00:38 -08:00
configure rename configure.in to configure.ac 2013-10-30 17:32:08 +10:00
configure.ac rename configure.in to configure.ac 2013-10-30 17:32:08 +10:00
crti.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
crtn.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
dl-irel.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
dl-lookupcfg.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
dl-machine.h Avoid crashing in LD_DEBUG when program name is unavailable 2013-05-29 21:34:12 +05:30
dl-runtime.c
dl-tls.h Add #include <stdint.h> for uint[32|64]_t usage (except installed headers). 2013-05-16 11:32:54 -05:00
dl-tlsdesc.h Add #include <stdint.h> for uint[32|64]_t usage (except installed headers). 2013-05-16 11:32:54 -05:00
dl-tlsdesc.S Fix typo in _dl_tlsdesc_resolve_hold. 2013-11-26 12:42:45 +01:00
dl-trampoline.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
dl-trampoline.S Fix typos. 2013-08-30 18:08:59 +02:00
ffs.c Make __ffs hidden 2013-09-20 21:25:31 +02:00
ffsll.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
hp-timing.c
hp-timing.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
htonl.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Implies Use x86-64 bits/byteswap.h for both i386 and x86_64 2012-05-30 14:13:18 -07:00
jmpbuf-offsets.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
jmpbuf-unwind.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
l10nflist.c
ldbl2mpn.c
ldsodefs.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
link-defines.sym
locale-defines.sym
lshift.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
machine-gmon.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Makefile Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
memchr.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
memcmp.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
memcpy_chk.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
memcpy.S Change __x86_64 prefix in cache size to __x86 2013-01-05 16:00:38 -08:00
memmove.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
mempcpy_chk.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
mempcpy.S Remove bounded-pointers handling from x86_64 assembly sources. 2013-02-17 21:57:26 +00:00
memrchr.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
memset_chk.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
memset.S Use p2align instead ALIGN 2013-10-08 15:46:48 +02:00
memusage.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
mp_clz_tab.c
mul_1.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
preconfigure rename configure.in to configure.ac 2013-10-30 17:32:08 +10:00
preconfigure.ac rename configure.in to configure.ac 2013-10-30 17:32:08 +10:00
rawmemchr.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
rshift.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
rtld-memcmp.c
rtld-memset.S Add rtld-memset.S for x86_64 2013-06-15 00:09:26 +05:30
rtld-strchr.S Remove bounded-pointers handling from x86_64 assembly sources. 2013-02-17 21:57:26 +00:00
rtld-strlen.S Remove bounded-pointers handling from x86_64 assembly sources. 2013-02-17 21:57:26 +00:00
sched_cpucount.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
setjmp.S Remove bounded-pointers handling from x86_64 assembly sources. 2013-02-17 21:57:26 +00:00
stackguard-macros.h BZ #15754: CVE-2013-4788 2013-09-23 00:52:09 -04:00
stackinfo.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
start.S Remove bounded-pointers handling from x86_64 assembly sources. 2013-02-17 21:57:26 +00:00
stpcpy_chk.S
stpcpy.S
strcasecmp_l-nonascii.c
strcasecmp_l.S
strcasecmp.S
strcat.S Faster strlen on x64. 2013-03-18 07:39:12 +01:00
strchr.S Use p2align instead ALIGN 2013-10-08 15:46:48 +02:00
strchrnul.S Faster strchr implementation. 2013-09-11 17:07:38 +02:00
strcmp.S BZ#11120: fix x86_64/strcmp.S NOT_IN_libc safeguards 2013-03-22 03:16:00 +00:00
strcpy_chk.S Remove bounded-pointers handling from x86_64 assembly sources. 2013-02-17 21:57:26 +00:00
strcpy.S Remove bounded-pointers handling from x86_64 assembly sources. 2013-02-17 21:57:26 +00:00
strcspn.S Remove trailing whitespace. 2013-06-05 20:44:03 +00:00
strlen.S Faster strlen on x64. 2013-03-18 07:39:12 +01:00
strncase_l-nonascii.c
strncase_l.S
strncase.S
strncmp.S
strnlen.S Faster strlen on x64. 2013-03-18 07:39:12 +01:00
strpbrk.S
strrchr.S Use p2align instead ALIGN 2013-10-08 15:46:48 +02:00
strspn.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
strtok_r.S Remove bounded-pointers handling from x86_64 assembly sources. 2013-02-17 21:57:26 +00:00
strtok.S Remove bounded-pointers handling from x86_64 assembly sources. 2013-02-17 21:57:26 +00:00
sub_n.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
submul_1.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
sysdep.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
tls-macros.h Split tls-macros.h into sysdeps directories. 2012-07-17 11:30:58 +00:00
tlsdesc.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
tlsdesc.sym
tst-audit3.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-audit4.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-audit5.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-audit6.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-audit7.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-audit.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
tst-auditmod3a.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-auditmod3b.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-auditmod4a.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-auditmod4b.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-auditmod5a.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-auditmod5b.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-auditmod6a.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-auditmod6b.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-auditmod6c.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-auditmod7a.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-auditmod7b.c Move x86_64-specific audit tests to sysdeps/x86_64/. 2013-04-25 19:23:11 +00:00
tst-mallocalign1.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
tst-quad1.c Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
tst-quad1pie.c Handle R_X86_64_RELATIVE64 and R_X86_64_64 for x32 2012-05-10 17:05:06 -07:00
tst-quad2.c Handle R_X86_64_RELATIVE64 and R_X86_64_64 for x32 2012-05-10 17:05:06 -07:00
tst-quad2pie.c Handle R_X86_64_RELATIVE64 and R_X86_64_64 for x32 2012-05-10 17:05:06 -07:00
tst-quadmod1.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
tst-quadmod1pie.S Handle R_X86_64_RELATIVE64 and R_X86_64_64 for x32 2012-05-10 17:05:06 -07:00
tst-quadmod2.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
tst-quadmod2pie.S Handle R_X86_64_RELATIVE64 and R_X86_64_64 for x32 2012-05-10 17:05:06 -07:00
tst-stack-align.h Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Versions
wcschr.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
wcscmp.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
wcslen.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
wcsrchr.S Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00