glibc/sysdeps/x86_64
Joseph Myers e02920bc02 Improve tgamma accuracy (bug 18613).
In non-default rounding modes, tgamma can be slightly less accurate
than permitted by glibc's accuracy goals.

Part of the problem is error accumulation, addressed in this patch by
setting round-to-nearest for internal computations.  However, there
was also a bug in the code dealing with computing pow (x + n, x + n)
where x + n is not exactly representable, providing another source of
error even in round-to-nearest mode; it was necessary to address both
bugs to get errors for all testcases within glibc's accuracy goals.
Given this second fix, accuracy in round-to-nearest mode is also
improved (hence regeneration of ulps for tgamma should be from scratch
- truncate libm-test-ulps or at least remove existing tgamma entries -
so that the expected ulps can be reduced).

Some additional complications also arose.  Certain tgamma tests should
strictly, according to IEEE semantics, overflow or not depending on
the rounding mode; this is beyond the scope of glibc's accuracy goals
for any function without exactly-determined results, but
gen-auto-libm-tests doesn't handle being lax there as it does for
underflow.  (libm-test.inc also doesn't handle being lax about whether
the result in cases very close to the overflow threshold is infinity
or a finite value close to overflow, but that doesn't cause problems
in this case though I've seen it cause problems with random test
generation for some functions.)  Thus, spurious-overflow markings,
with a comment, are added to auto-libm-test-in (no bug in Bugzilla
because the issue is with the testsuite, not a user-visible bug in
glibc).  And on x86, after the patch I saw ERANGE issues as previously
reported by Carlos (see my commentary in
<https://sourceware.org/ml/libc-alpha/2015-01/msg00485.html>), which
needed addressing by ensuring excess range and precision were
eliminated at various points if FLT_EVAL_METHOD != 0.

I also noticed and fixed a cosmetic issue where 1.0f was used in long
double functions and should have been 1.0L.

This completes the move of all functions to testing in all rounding
modes with ALL_RM_TEST, so gen-libm-have-vector-test.sh is updated to
remove the workaround for some functions not using ALL_RM_TEST.

Tested for x86_64, x86, mips64 and powerpc.

	[BZ #18613]
	* sysdeps/ieee754/dbl-64/e_gamma_r.c (gamma_positive): Take log of
	X_ADJ not X when adjusting exponent.
	(__ieee754_gamma_r): Do intermediate computations in
	round-to-nearest then adjust overflowing and underflowing results
	as needed.
	* sysdeps/ieee754/flt-32/e_gammaf_r.c (gammaf_positive): Take log
	of X_ADJ not X when adjusting exponent.
	(__ieee754_gammaf_r): Do intermediate computations in
	round-to-nearest then adjust overflowing and underflowing results
	as needed.
	* sysdeps/ieee754/ldbl-128/e_gammal_r.c (gammal_positive): Take
	log of X_ADJ not X when adjusting exponent.
	(__ieee754_gammal_r): Do intermediate computations in
	round-to-nearest then adjust overflowing and underflowing results
	as needed.  Use 1.0L not 1.0f as numerator of division.
	* sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c (gammal_positive): Take
	log of X_ADJ not X when adjusting exponent.
	(__ieee754_gammal_r): Do intermediate computations in
	round-to-nearest then adjust overflowing and underflowing results
	as needed.  Use 1.0L not 1.0f as numerator of division.
	* sysdeps/ieee754/ldbl-96/e_gammal_r.c (gammal_positive): Take log
	of X_ADJ not X when adjusting exponent.
	(__ieee754_gammal_r): Do intermediate computations in
	round-to-nearest then adjust overflowing and underflowing results
	as needed.  Use 1.0L not 1.0f as numerator of division.
	* math/libm-test.inc (tgamma_test_data): Remove one test.  Moved
	to auto-libm-test-in.
	(tgamma_test): Use ALL_RM_TEST.
	* math/auto-libm-test-in: Add one test of tgamma.  Mark some other
	tests of tgamma with spurious-overflow.
	* math/auto-libm-test-out: Regenerated.
	* math/gen-libm-have-vector-test.sh: Do not check for START.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
2015-06-29 23:29:35 +00:00
..
64 Move architecture shlib-versions files to Linux-specific directories. 2014-07-17 14:31:12 +00:00
bits Fix atomic_full_barrier on x86 and x86_64. 2015-06-23 19:20:52 +02:00
fpu Improve tgamma accuracy (bug 18613). 2015-06-29 23:29:35 +00:00
multiarch This patch adds detection of availability for AVX512F and AVX512DQ ISAs. 2015-06-08 14:07:59 +03:00
nptl NPTL: swap comments for THREAD_SETMEM and THREAD_SETMEM_NC for i386 and x86_64 2015-03-28 00:44:22 -04:00
x32 lround: provide cast for wordsize-64 version if needed 2015-01-05 11:59:32 -05:00
____longjmp_chk.S
__longjmp.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
_mcount.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
abort-instr.h
add_n.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
addmul_1.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
backtrace.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
bsd-_setjmp.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
bsd-setjmp.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
bzero.S
cacheinfo.c Limit threads sharing L2 cache to 2 for SLM/KNL 2015-03-31 13:18:10 -07:00
configure More strict check of AVX512 support in assembler. 2015-06-11 13:50:07 +03:00
configure.ac More strict check of AVX512 support in assembler. 2015-06-11 13:50:07 +03:00
crti.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
crtn.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-irel.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-lookupcfg.h Add ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA to x86 2015-03-31 05:16:57 -07:00
dl-machine.h Add ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA to x86 2015-03-31 05:16:57 -07:00
dl-runtime.c
dl-tls.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-tlsdesc.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-tlsdesc.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-trampoline.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
dl-trampoline.S Preserve bound registers in _dl_runtime_resolve 2015-03-16 14:59:14 -07:00
ffs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ffsll.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
hp-timing.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
htonl.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Implies
jmpbuf-offsets.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
jmpbuf-unwind.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
l10nflist.c
ldbl2mpn.c
ldsodefs.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
link-defines.sym Replace __int128 with __int128_t 2014-05-30 10:50:21 -07:00
locale-defines.sym
lshift.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
machine-gmon.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Makefile Clean up sysdep-dl-routines variable. 2015-02-06 10:42:08 -08:00
memchr.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memcmp.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memcpy_chk.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memcpy.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memmove.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mempcpy_chk.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mempcpy.S
memrchr.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memset_chk.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memset.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
memusage.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mp_clz_tab.c
mul_1.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +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 dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rshift.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rtld-memcmp.c
rtld-memset.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rtld-strchr.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
rtld-strlen.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sched_cpucount.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
setjmp.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
stack-aliasing.h Clean up stack-coloring macros. 2014-06-20 19:50:16 -07:00
stackguard-macros.h BZ #15754: CVE-2013-4788 2013-09-23 00:52:09 -04:00
stackinfo.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
start.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
stpcpy_chk.S
stpcpy.S
strcasecmp_l-nonascii.c
strcasecmp_l.S
strcasecmp.S
strcat.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strchr.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strchrnul.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcmp.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcpy_chk.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcpy.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strcspn.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strlen.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strncase_l-nonascii.c
strncase_l.S
strncase.S
strncmp.S Add SSE2 support to str{,n}cmp for x86-64. 2009-07-26 13:32:28 -07:00
strnlen.S Faster strlen on x64. 2013-03-18 07:39:12 +01:00
strpbrk.S
strrchr.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strspn.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
strtok_r.S
strtok.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sub_n.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
submul_1.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sysdep.h Start of series of patches with x86_64 vector math functions. 2015-06-09 14:25:49 +03:00
tls-macros.h
tlsdesc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tlsdesc.sym
tst-audit3.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-audit4.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
tst-audit5.c Modify several tests to use test-skeleton.c 2014-11-05 15:24:08 +05:30
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-audit10.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-audit.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +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-auditmod10a.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-auditmod10b.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mallocalign1.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-quad1.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-quad1pie.c
tst-quad2.c
tst-quad2pie.c
tst-quadmod1.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-quadmod1pie.S
tst-quadmod2.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-quadmod2pie.S
tst-stack-align.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Versions
wcschr.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcscmp.S Fix regcomp wcscoll, wcscmp namespace (bug 18497). 2015-06-09 21:07:30 +00:00
wcslen.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcsrchr.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00