about summary refs log tree commit diff
path: root/math/auto-libm-test-in
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-02-25 11:13:41 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-02-25 11:13:41 +0000
commit137cef7d433407bd2ded8bcc5bea70e5858df47a (patch)
treedeb0a6e04c5e7220d1e4eebcf59ab9d792a8eca6 /math/auto-libm-test-in
parentcb43bb0d68f001fc3d6e054d712ab8794b5fd1de (diff)
downloadglibc-137cef7d433407bd2ded8bcc5bea70e5858df47a.tar.gz
glibc-137cef7d433407bd2ded8bcc5bea70e5858df47a.tar.xz
glibc-137cef7d433407bd2ded8bcc5bea70e5858df47a.zip
Fix ldbl-128ibm asinhl inaccuracy (bug 18020).
The ldbl-128ibm implementation of asinhl uses cut-offs of 0x1p28 and
0x1p-29 to determine when to use simpler formulas that avoid possible
overflow / underflow.  Both those cut-offs are inappropriate for this
format, resulting in large errors.  This patch changes the code to use
more appropriate cut-offs of 0x1p56 and 0x1p-56, adding tests around
the cut-offs for various floating-point formats.

Tested for powerpc.  Also tested for x86_64 and x86 and updated ulps.

	[BZ #18020]
	* sysdeps/ieee754/ldbl-128ibm/s_asinhl.c (__asinhl): Use 2**56 and
	2**-56 not 2**28 and 2**-29 as thresholds for simpler formulas.
	* math/auto-libm-test-in: Add more tests of asinh.
	* math/auto-libm-test-out: Regenerated.
	* sysdeps/i386/fpu/libm-test-ulps: Update.
	* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
Diffstat (limited to 'math/auto-libm-test-in')
-rw-r--r--math/auto-libm-test-in61
1 files changed, 61 insertions, 0 deletions
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index a4bd972c80..df51c26ff9 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -104,8 +104,69 @@ asinh 1
 asinh 10
 asinh 100
 asinh 1e6
+asinh 0x1p8
+asinh 0x1p9
+asinh 0x1p10
+asinh 0x1p11
+asinh 0x1p12
+asinh 0x1p13
+asinh 0x1p24
+asinh 0x1p25
+asinh 0x1p26
+asinh 0x1p27
+asinh 0x1p28
+asinh 0x1p29
+asinh 0x1p30
+asinh 0x1p31
+asinh 0x1p32
+asinh 0x1p33
+asinh 0x1p48
+asinh 0x1p49
+asinh 0x1p50
+asinh 0x1p51
+asinh 0x1p52
+asinh 0x1p53
+asinh 0x1p54
+asinh 0x1p55
+asinh 0x1p56
+asinh 0x1p57
+asinh 0x1p58
+asinh 0x1p59
 asinh 0x1p100
+asinh 0x1p500
+asinh 0x1p5000
+asinh 0x1p-8
+asinh 0x1p-9
+asinh 0x1p-10
+asinh 0x1p-11
+asinh 0x1p-12
+asinh 0x1p-13
+asinh 0x1p-24
+asinh 0x1p-25
+asinh 0x1p-26
+asinh 0x1p-27
+asinh 0x1p-28
+asinh 0x1p-29
+asinh 0x1p-30
+asinh 0x1p-31
+asinh 0x1p-32
+asinh 0x1p-33
+asinh 0x1p-48
+asinh 0x1p-49
+asinh 0x1p-50
+asinh 0x1p-51
+asinh 0x1p-52
+asinh 0x1p-53
+asinh 0x1p-54
+asinh 0x1p-55
+asinh 0x1p-56
+asinh 0x1p-57
+asinh 0x1p-58
+asinh 0x1p-59
+asinh 0x1p-100
 # Bug 16350: underflow exception may be missing.
+asinh 0x1p-500 missing-underflow
+asinh 0x1p-5000 missing-underflow
 asinh min missing-underflow
 asinh -min missing-underflow
 asinh min_subnorm missing-underflow