glibc/sysdeps
Joseph Myers 03a7091fa2 Fix x86/x86_64 expl/exp10l spurious underflows (bug 16348).
This patch fixes bug 16348, spurious underflows from x86/x86_64 expl
on arguments close to 0.  These implementations effectively use expm1
(on the fractional part of the argument) internally, so resulting in
spurious underflows when the result is very close to 1.  For arguments
small enough that the round-to-nearest correct result is 1, this patch
uses 1+x instead.

These implementations are also used for exp10l and so the patch fixes
similar issues there (the 0x1p-67 threshold being small enough to be
correct for exp10l as well as expl).  But because of spurious
underflows in other exp10 implementations (bug 16560), the tests
aren't added for exp10 at this point - they can be added when the
other exp10 parts of that bug are fixed.

Tested x86_64 and x86; no ulps updates needed.

	[BZ #16348]
	* sysdeps/i386/fpu/e_expl.S (IEEE754_EXPL) [!USE_AS_EXPM1L]: Use
	1+x for argument with exponent below -67.
	* sysdeps/x86_64/fpu/e_expl.S (IEEE754_EXPL) [!USE_AS_EXPM1L]:
	Likewise.
	* math/auto-libm-test-in: Add more tests of exp.
	* math/auto-libm-test-out: Regenerated.
2014-03-27 18:41:14 +00:00
..
aarch64 Compile with -Wundef. 2014-03-14 11:32:51 -07:00
alpha Compile with -Wundef. 2014-03-14 11:32:51 -07:00
arm Fix -Wundef warnins for __FP_FAST_FMA* 2014-03-21 17:28:43 +05:30
generic S390: Define SIZE_MAX as unsigned long (BZ #16712). 2014-03-24 16:59:01 +01:00
gnu Combine __USE_BSD and __USE_SVID into __USE_MISC. 2014-02-12 23:41:01 +00:00
i386 Fix x86/x86_64 expl/exp10l spurious underflows (bug 16348). 2014-03-27 18:41:14 +00:00
ia64 Compile with -Wundef. 2014-03-14 11:32:51 -07:00
ieee754 Fix implicit __isinf declarations in exp. 2014-03-24 22:00:32 +00:00
init_array Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
m68k Compile with -Wundef. 2014-03-14 11:32:51 -07:00
mach Compile with -Wundef. 2014-03-14 11:32:51 -07:00
microblaze Compile with -Wundef. 2014-03-14 11:32:51 -07:00
mips Fix -Wundef warnings for _ABI* on MIPS. 2014-03-21 18:21:13 +00:00
posix Fix use of half-initialized result in getaddrinfo when using nscd (bug 16743) 2014-03-24 16:51:53 +01:00
powerpc Update powerpc-fpu ULPs. 2014-03-25 10:13:53 -05:00
pthread Use glibc_likely instead __builtin_expect. 2014-02-10 15:07:12 +01:00
s390 S390: Define SIZE_MAX as unsigned long (BZ #16712). 2014-03-24 16:59:01 +01:00
sh Don't include individual test ulps in libm-test-ulps. 2014-03-05 15:02:38 +00:00
sparc Don't include individual test ulps in libm-test-ulps. 2014-03-05 15:02:38 +00:00
tile Fix -Wundef warnins for __FP_FAST_FMA* 2014-03-21 17:28:43 +05:30
unix Fix use of uninitialized variable 2014-03-25 15:17:08 +01:00
wordsize-32 Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
wordsize-64 Update copyright notices with scripts/update-copyrights 2014-01-01 22:00:23 +10:00
x86 Fix -Wundef warnins for __FP_FAST_FMA* 2014-03-21 17:28:43 +05:30
x86_64 Fix x86/x86_64 expl/exp10l spurious underflows (bug 16348). 2014-03-27 18:41:14 +00:00