aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Zimmermann <Paul.Zimmermann@inria.fr>2020-03-30 15:55:55 +0200
committerCarlos O'Donell <carlos@redhat.com>2020-03-31 21:48:54 -0400
commita9d42c09a327540a99f2eac25a98fd2ad6d0b540 (patch)
tree2868b4c24e993154324f514af46329e43b2c7d1e
parent49c3c37651e2d2ec4ff8ce21252bbbc08a9d6639 (diff)
downloadglibc-a9d42c09a327540a99f2eac25a98fd2ad6d0b540.zip
glibc-a9d42c09a327540a99f2eac25a98fd2ad6d0b540.tar.gz
glibc-a9d42c09a327540a99f2eac25a98fd2ad6d0b540.tar.bz2
math: Add inputs that yield larger errors for float type (x86_64)
The corner cases included were generated using exhaustive search for all float/binary32 values on x86_64 (comparing to MPFR for correct rounding to nearest). For the j0/j1/y0 functions, only cases with ulp error <= 9 were included. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
-rw-r--r--math/auto-libm-test-in24
-rw-r--r--math/auto-libm-test-out-asinh25
-rw-r--r--math/auto-libm-test-out-cos25
-rw-r--r--math/auto-libm-test-out-cosh25
-rw-r--r--math/auto-libm-test-out-erfc25
-rw-r--r--math/auto-libm-test-out-exp25
-rw-r--r--math/auto-libm-test-out-exp1025
-rw-r--r--math/auto-libm-test-out-j025
-rw-r--r--math/auto-libm-test-out-j125
-rw-r--r--math/auto-libm-test-out-lgamma25
-rw-r--r--math/auto-libm-test-out-sin25
-rw-r--r--math/auto-libm-test-out-tgamma25
-rw-r--r--math/auto-libm-test-out-y025
-rw-r--r--sysdeps/i386/i686/fpu/multiarch/libm-test-ulps35
-rw-r--r--sysdeps/x86_64/fpu/libm-test-ulps88
15 files changed, 388 insertions, 59 deletions
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index f36fea0..749eb34 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -371,6 +371,8 @@ asinh -0x6.e26358p-4
asinh 0x6.c92c08p-4
asinh 0x1p-500
asinh 0x1p-5000
+# the next value generates larger error bounds on x86_64 (binary32)
+asinh 0xf.96c69p-8
asinh min
asinh -min
asinh min_subnorm
@@ -4421,6 +4423,8 @@ cos 0x3.042d88p+0
cos 0x1.8475e5afd4481p+0
cos 1.57079697
cos -1.57079697
+# the next value generates larger error bounds on x86_64 (binary32)
+cos 0x2.3c6ef4p-12
cosh 0
cosh -0
@@ -4482,6 +4486,8 @@ cosh 0x2.c5d37700c6bb03a6c24b6c9b494cp+12
cosh 0x2.c5d37700c6bb03a6c24b6c9b494ep+12
cosh -0x2.c5d37700c6bb03a6c24b6c9b494cp+12
cosh -0x2.c5d37700c6bb03a6c24b6c9b494ep+12
+# the next value generates larger error bounds on x86_64 (binary32)
+cosh 0x5.8bfe6p+4
cpow 1 0 0 0 ignore-zero-inf-sign
cpow 2 0 10 0 ignore-zero-inf-sign
@@ -4982,6 +4988,8 @@ erfc 0x6.a8a0561d8bbe942p+4
erfc 0x6.a8a0561d8bbe9428p+4
erfc 0x6.a893032db905274042fb05c665dcp+4
erfc 0x6.a893032db905274042fb05c665ep+4
+# the next value generates larger error bounds on x86_64 (binary32)
+erfc 0xd.03d06p-4
erfc min
erfc -min
erfc min_subnorm
@@ -5096,6 +5104,8 @@ exp 0x3.248524p+0
exp 0x1.f0b362p+0
exp 0xd.89746a799ac4eedp+0
exp -0x6.58b64p-4
+# the next value generates larger error bounds on x86_64 (binary32)
+exp 0x1.fefe02p-16
exp10 0
exp10 -0
@@ -5159,6 +5169,8 @@ exp10 0x1.34413509f79fef311f12b35816f9p+12
exp10 0x1.34413509f79fef311f12b35816fap+12
exp10 -0x1.343793004f503231a589bac27c39p+12
exp10 -0x1.343793004f503231a589bac27c38p+12
+# the next value generates larger error bounds on x86_64 (binary32)
+exp10 -0xa.6f431p+0
exp10 min
exp10 -min
exp10 min_subnorm
@@ -5734,6 +5746,8 @@ j0 -0x1.001000001p+593
j0 0x1p1023
j0 0x1p16382
j0 0x1p16383
+# the next value generates larger error bounds on x86_64 (binary32)
+j0 0x2.602774p+0
j1 -1.0
j1 0.0
@@ -5765,6 +5779,8 @@ j1 0x1p-60
j1 0x1p-100
j1 0x1p-600
j1 0x1p-10000
+# the next value generates larger error bounds on x86_64 (binary32)
+j1 0x3.ae4b2p+0
j1 min
j1 -min
j1 min_subnorm
@@ -5903,6 +5919,8 @@ lgamma 0x1p-16445
lgamma -0x1p-16445
lgamma 0x1p-16494
lgamma -0x1p-16494
+# the next value generates larger error bounds on x86_64 (binary32)
+lgamma -0x3.ec4298p+0
# Values +/- 10ulp from overflow threshold. (Values very close to
# overflow threshold produce results very close of that threshold,
@@ -7205,6 +7223,8 @@ sin 0x6.287cc8749212e72p+0
sin -0x1.02e34cp+0
sin 0xf.f0274p+4
sin 0x3.042d88p+0
+# the next value generates larger error bounds on x86_64 (binary32)
+sin 0x1.d12ed2p-12
sin max
sin -max
sin min
@@ -8159,6 +8179,8 @@ tgamma -0xa.ccfcep+0
tgamma -0x9.418c8p+0
tgamma -0x6.ce9158p+0
tgamma -0xd.cbf53d0e7d06p+0
+# the next value generates larger error bounds on x86_64 (binary32)
+tgamma -0x3.0aa534p+0
y0 0.125
y0 0.75
@@ -8185,6 +8207,8 @@ y0 0x1p-100
y0 0x1p-110
y0 0x1p-600
y0 0x1p-10000
+# the next value generates larger error bounds on x86_64 (binary32)
+y0 0xd.3432bp-4
y0 min
y0 min_subnorm
diff --git a/math/auto-libm-test-out-asinh b/math/auto-libm-test-out-asinh
index 8520865..648fe06 100644
--- a/math/auto-libm-test-out-asinh
+++ b/math/auto-libm-test-out-asinh
@@ -2506,6 +2506,31 @@ asinh 0x1p-5000
= asinh tonearest binary128 0x1p-5000 : 0x1p-5000 : inexact-ok
= asinh towardzero binary128 0x1p-5000 : 0xf.fffffffffffffffffffffffffff8p-5004 : inexact-ok
= asinh upward binary128 0x1p-5000 : 0x1p-5000 : inexact-ok
+asinh 0xf.96c69p-8
+= asinh downward binary32 0xf.96c69p-8 : 0xf.94503p-8 : inexact-ok
+= asinh tonearest binary32 0xf.96c69p-8 : 0xf.94504p-8 : inexact-ok
+= asinh towardzero binary32 0xf.96c69p-8 : 0xf.94503p-8 : inexact-ok
+= asinh upward binary32 0xf.96c69p-8 : 0xf.94504p-8 : inexact-ok
+= asinh downward binary64 0xf.96c69p-8 : 0xf.94503821fcc68p-8 : inexact-ok
+= asinh tonearest binary64 0xf.96c69p-8 : 0xf.94503821fcc68p-8 : inexact-ok
+= asinh towardzero binary64 0xf.96c69p-8 : 0xf.94503821fcc68p-8 : inexact-ok
+= asinh upward binary64 0xf.96c69p-8 : 0xf.94503821fcc7p-8 : inexact-ok
+= asinh downward intel96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok
+= asinh tonearest intel96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok
+= asinh towardzero intel96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok
+= asinh upward intel96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok
+= asinh downward m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok
+= asinh tonearest m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok
+= asinh towardzero m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aeap-8 : inexact-ok
+= asinh upward m68k96 0xf.96c69p-8 : 0xf.94503821fcc6aebp-8 : inexact-ok
+= asinh downward binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d4935p-8 : inexact-ok
+= asinh tonearest binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d4935p-8 : inexact-ok
+= asinh towardzero binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d4935p-8 : inexact-ok
+= asinh upward binary128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d49358p-8 : inexact-ok
+= asinh downward ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d49p-8 : inexact-ok
+= asinh tonearest ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d494p-8 : inexact-ok
+= asinh towardzero ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d49p-8 : inexact-ok
+= asinh upward ibm128 0xf.96c69p-8 : 0xf.94503821fcc6aead1cad28d494p-8 : inexact-ok
asinh min
= asinh downward binary32 0x4p-128 : 0x3.fffff8p-128 : inexact-ok underflow-ok errno-erange-ok
= asinh tonearest binary32 0x4p-128 : 0x4p-128 : inexact-ok underflow-ok errno-erange-ok
diff --git a/math/auto-libm-test-out-cos b/math/auto-libm-test-out-cos
index 072e04f..fcb5d17 100644
--- a/math/auto-libm-test-out-cos
+++ b/math/auto-libm-test-out-cos
@@ -3223,3 +3223,28 @@ cos -1.57079697
= cos tonearest ibm128 -0x1.921fc00ece4f02f278ade6ad9fp+0 : -0xa.ca8b7d7e881db0d4919460ab44p-24 : inexact-ok
= cos towardzero ibm128 -0x1.921fc00ece4f02f278ade6ad9fp+0 : -0xa.ca8b7d7e881db0d4919460ab4p-24 : inexact-ok
= cos upward ibm128 -0x1.921fc00ece4f02f278ade6ad9fp+0 : -0xa.ca8b7d7e881db0d4919460ab4p-24 : inexact-ok
+cos 0x2.3c6ef4p-12
+= cos downward binary32 0x2.3c6ef4p-12 : 0xf.ffffdp-4 : inexact-ok
+= cos tonearest binary32 0x2.3c6ef4p-12 : 0xf.ffffdp-4 : inexact-ok
+= cos towardzero binary32 0x2.3c6ef4p-12 : 0xf.ffffdp-4 : inexact-ok
+= cos upward binary32 0x2.3c6ef4p-12 : 0xf.ffffep-4 : inexact-ok
+= cos downward binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffc8p-4 : inexact-ok
+= cos tonearest binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffdp-4 : inexact-ok
+= cos towardzero binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffc8p-4 : inexact-ok
+= cos upward binary64 0x2.3c6ef4p-12 : 0xf.ffffd7fffffdp-4 : inexact-ok
+= cos downward intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok
+= cos tonearest intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok
+= cos towardzero intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok
+= cos upward intel96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5fp-4 : inexact-ok
+= cos downward m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok
+= cos tonearest m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok
+= cos towardzero m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5ep-4 : inexact-ok
+= cos upward m68k96 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5fp-4 : inexact-ok
+= cos downward binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68fp-4 : inexact-ok
+= cos tonearest binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68fp-4 : inexact-ok
+= cos towardzero binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68fp-4 : inexact-ok
+= cos upward binary128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68f8p-4 : inexact-ok
+= cos downward ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68p-4 : inexact-ok
+= cos tonearest ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68p-4 : inexact-ok
+= cos towardzero ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e68p-4 : inexact-ok
+= cos upward ibm128 0x2.3c6ef4p-12 : 0xf.ffffd7fffffcf5e6384f874e6cp-4 : inexact-ok
diff --git a/math/auto-libm-test-out-cosh b/math/auto-libm-test-out-cosh
index 35edd5a..6039a35 100644
--- a/math/auto-libm-test-out-cosh
+++ b/math/auto-libm-test-out-cosh
@@ -3385,3 +3385,28 @@ cosh -0x2.c5d37700c6bb03a6c24b6c9b494ep+12
= cosh tonearest ibm128 -0x2.c5d37700c6bb03a6c24b6c9b4ap+12 : plus_infty : inexact-ok overflow errno-erange
= cosh towardzero ibm128 -0x2.c5d37700c6bb03a6c24b6c9b4ap+12 : 0xf.ffffffffffffbffffffffffffcp+1020 : xfail:ibm128-libgcc inexact-ok overflow errno-erange-ok
= cosh upward ibm128 -0x2.c5d37700c6bb03a6c24b6c9b4ap+12 : plus_infty : xfail:ibm128-libgcc inexact-ok overflow errno-erange
+cosh 0x5.8bfe6p+4
+= cosh downward binary32 0x5.8bfe6p+4 : 0x8.378d9p+124 : inexact-ok
+= cosh tonearest binary32 0x5.8bfe6p+4 : 0x8.378d9p+124 : inexact-ok
+= cosh towardzero binary32 0x5.8bfe6p+4 : 0x8.378d9p+124 : inexact-ok
+= cosh upward binary32 0x5.8bfe6p+4 : 0x8.378dap+124 : inexact-ok
+= cosh downward binary64 0x5.8bfe6p+4 : 0x8.378d97e8a9838p+124 : inexact-ok
+= cosh tonearest binary64 0x5.8bfe6p+4 : 0x8.378d97e8a9838p+124 : inexact-ok
+= cosh towardzero binary64 0x5.8bfe6p+4 : 0x8.378d97e8a9838p+124 : inexact-ok
+= cosh upward binary64 0x5.8bfe6p+4 : 0x8.378d97e8a984p+124 : inexact-ok
+= cosh downward intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok
+= cosh tonearest intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok
+= cosh towardzero intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok
+= cosh upward intel96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b9p+124 : inexact-ok
+= cosh downward m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok
+= cosh tonearest m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok
+= cosh towardzero m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8p+124 : inexact-ok
+= cosh upward m68k96 0x5.8bfe6p+4 : 0x8.378d97e8a9838b9p+124 : inexact-ok
+= cosh downward binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a68p+124 : inexact-ok
+= cosh tonearest binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a68p+124 : inexact-ok
+= cosh towardzero binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a68p+124 : inexact-ok
+= cosh upward binary128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93a7p+124 : inexact-ok
+= cosh downward ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b938p+124 : inexact-ok
+= cosh tonearest ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93cp+124 : inexact-ok
+= cosh towardzero ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b938p+124 : inexact-ok
+= cosh upward ibm128 0x5.8bfe6p+4 : 0x8.378d97e8a9838b8164de61b93cp+124 : inexact-ok
diff --git a/math/auto-libm-test-out-erfc b/math/auto-libm-test-out-erfc
index 257370e..6a921fe 100644
--- a/math/auto-libm-test-out-erfc
+++ b/math/auto-libm-test-out-erfc
@@ -2860,6 +2860,31 @@ erfc 0x6.a893032db905274042fb05c665ep+4
= erfc tonearest ibm128 0x6.a893032db905274042fb05c664p+4 : 0x0p+0 : inexact-ok underflow errno-erange
= erfc towardzero ibm128 0x6.a893032db905274042fb05c664p+4 : 0x0p+0 : xfail:ibm128-libgcc inexact-ok underflow errno-erange
= erfc upward ibm128 0x6.a893032db905274042fb05c664p+4 : 0x4p-1076 : xfail:ibm128-libgcc inexact-ok underflow errno-erange-ok
+erfc 0xd.03d06p-4
+= erfc downward binary32 0xd.03d06p-4 : 0x3.fff918p-4 : inexact-ok
+= erfc tonearest binary32 0xd.03d06p-4 : 0x3.fff91cp-4 : inexact-ok
+= erfc towardzero binary32 0xd.03d06p-4 : 0x3.fff918p-4 : inexact-ok
+= erfc upward binary32 0xd.03d06p-4 : 0x3.fff91cp-4 : inexact-ok
+= erfc downward binary64 0xd.03d06p-4 : 0x3.fff91a7d782bp-4 : inexact-ok
+= erfc tonearest binary64 0xd.03d06p-4 : 0x3.fff91a7d782bp-4 : inexact-ok
+= erfc towardzero binary64 0xd.03d06p-4 : 0x3.fff91a7d782bp-4 : inexact-ok
+= erfc upward binary64 0xd.03d06p-4 : 0x3.fff91a7d782b2p-4 : inexact-ok
+= erfc downward intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok
+= erfc tonearest intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok
+= erfc towardzero intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok
+= erfc upward intel96 0xd.03d06p-4 : 0x3.fff91a7d782b0068p-4 : inexact-ok
+= erfc downward m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok
+= erfc tonearest m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok
+= erfc towardzero m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0064p-4 : inexact-ok
+= erfc upward m68k96 0xd.03d06p-4 : 0x3.fff91a7d782b0068p-4 : inexact-ok
+= erfc downward binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87cp-4 : inexact-ok
+= erfc tonearest binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87cp-4 : inexact-ok
+= erfc towardzero binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87cp-4 : inexact-ok
+= erfc upward binary128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be87ep-4 : inexact-ok
+= erfc downward ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be8p-4 : inexact-ok
+= erfc tonearest ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be8p-4 : inexact-ok
+= erfc towardzero ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be8p-4 : inexact-ok
+= erfc upward ibm128 0xd.03d06p-4 : 0x3.fff91a7d782b006458655c2be9p-4 : inexact-ok
erfc min
= erfc downward binary32 0x4p-128 : 0xf.fffffp-4 : inexact-ok
= erfc tonearest binary32 0x4p-128 : 0x1p+0 : inexact-ok
diff --git a/math/auto-libm-test-out-exp b/math/auto-libm-test-out-exp
index 399f5b6..38d2c52 100644
--- a/math/auto-libm-test-out-exp
+++ b/math/auto-libm-test-out-exp
@@ -4844,3 +4844,28 @@ exp -0x6.58b64p-4
= exp tonearest ibm128 -0x6.58b64p-4 : 0xa.c2d2580088709f3262612e0cb8p-4 : inexact-ok
= exp towardzero ibm128 -0x6.58b64p-4 : 0xa.c2d2580088709f3262612e0cb8p-4 : inexact-ok
= exp upward ibm128 -0x6.58b64p-4 : 0xa.c2d2580088709f3262612e0cbcp-4 : inexact-ok
+exp 0x1.fefe02p-16
+= exp downward binary32 0x1.fefe02p-16 : 0x1.0001fep+0 : inexact-ok
+= exp tonearest binary32 0x1.fefe02p-16 : 0x1.0001fep+0 : inexact-ok
+= exp towardzero binary32 0x1.fefe02p-16 : 0x1.0001fep+0 : inexact-ok
+= exp upward binary32 0x1.fefe02p-16 : 0x1.0002p+0 : inexact-ok
+= exp downward binary64 0x1.fefe02p-16 : 0x1.0001fefffffddp+0 : inexact-ok
+= exp tonearest binary64 0x1.fefe02p-16 : 0x1.0001fefffffdep+0 : inexact-ok
+= exp towardzero binary64 0x1.fefe02p-16 : 0x1.0001fefffffddp+0 : inexact-ok
+= exp upward binary64 0x1.fefe02p-16 : 0x1.0001fefffffdep+0 : inexact-ok
+= exp downward intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok
+= exp tonearest intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok
+= exp towardzero intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok
+= exp upward intel96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok
+= exp downward m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok
+= exp tonearest m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok
+= exp towardzero m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd952p+0 : inexact-ok
+= exp upward m68k96 0x1.fefe02p-16 : 0x1.0001fefffffdd954p+0 : inexact-ok
+= exp downward binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648616fp+0 : inexact-ok
+= exp tonearest binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648617p+0 : inexact-ok
+= exp towardzero binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648616fp+0 : inexact-ok
+= exp upward binary128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648617p+0 : inexact-ok
+= exp downward ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f964861p+0 : inexact-ok
+= exp tonearest ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648618p+0 : inexact-ok
+= exp towardzero ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f964861p+0 : inexact-ok
+= exp upward ibm128 0x1.fefe02p-16 : 0x1.0001fefffffdd953027f9648618p+0 : inexact-ok
diff --git a/math/auto-libm-test-out-exp10 b/math/auto-libm-test-out-exp10
index 4ce495d..d078b36 100644
--- a/math/auto-libm-test-out-exp10
+++ b/math/auto-libm-test-out-exp10
@@ -3620,6 +3620,31 @@ exp10 -0x1.343793004f503231a589bac27c38p+12
= exp10 tonearest ibm128 -0x1.343793004f503231a589bac27c8p+12 : 0x0p+0 : inexact-ok underflow errno-erange
= exp10 towardzero ibm128 -0x1.343793004f503231a589bac27c8p+12 : 0x0p+0 : xfail:ibm128-libgcc inexact-ok underflow errno-erange
= exp10 upward ibm128 -0x1.343793004f503231a589bac27c8p+12 : 0x4p-1076 : xfail:ibm128-libgcc inexact-ok underflow errno-erange-ok
+exp10 -0xa.6f431p+0
+= exp10 downward binary32 -0xa.6f431p+0 : 0x2.86b328p-36 : inexact-ok
+= exp10 tonearest binary32 -0xa.6f431p+0 : 0x2.86b32cp-36 : inexact-ok
+= exp10 towardzero binary32 -0xa.6f431p+0 : 0x2.86b328p-36 : inexact-ok
+= exp10 upward binary32 -0xa.6f431p+0 : 0x2.86b32cp-36 : inexact-ok
+= exp10 downward binary64 -0xa.6f431p+0 : 0x2.86b32a000000cp-36 : inexact-ok
+= exp10 tonearest binary64 -0xa.6f431p+0 : 0x2.86b32a000000ep-36 : inexact-ok
+= exp10 towardzero binary64 -0xa.6f431p+0 : 0x2.86b32a000000cp-36 : inexact-ok
+= exp10 upward binary64 -0xa.6f431p+0 : 0x2.86b32a000000ep-36 : inexact-ok
+= exp10 downward intel96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok
+= exp10 tonearest intel96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok
+= exp10 towardzero intel96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok
+= exp10 upward intel96 -0xa.6f431p+0 : 0x2.86b32a000000da38p-36 : inexact-ok
+= exp10 downward m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok
+= exp10 tonearest m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok
+= exp10 towardzero m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da34p-36 : inexact-ok
+= exp10 upward m68k96 -0xa.6f431p+0 : 0x2.86b32a000000da38p-36 : inexact-ok
+= exp10 downward binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3ap-36 : inexact-ok
+= exp10 tonearest binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3ap-36 : inexact-ok
+= exp10 towardzero binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3ap-36 : inexact-ok
+= exp10 upward binary128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69d3cp-36 : inexact-ok
+= exp10 downward ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69dp-36 : inexact-ok
+= exp10 tonearest ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69dp-36 : inexact-ok
+= exp10 towardzero ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69dp-36 : inexact-ok
+= exp10 upward ibm128 -0xa.6f431p+0 : 0x2.86b32a000000da34970abbb69ep-36 : inexact-ok
exp10 min
= exp10 downward binary32 0x4p-128 : 0x1p+0 : inexact-ok
= exp10 tonearest binary32 0x4p-128 : 0x1p+0 : inexact-ok
diff --git a/math/auto-libm-test-out-j0 b/math/auto-libm-test-out-j0
index dd66299..2b19908 100644
--- a/math/auto-libm-test-out-j0
+++ b/math/auto-libm-test-out-j0
@@ -1334,3 +1334,28 @@ j0 0x1p16383
= j0 tonearest ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f01904p-516 : inexact-ok
= j0 towardzero ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : inexact-ok
= j0 upward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : -0xb.a80d0ee91ce259a722e1f019p-516 : inexact-ok
+j0 0x2.602774p+0
+= j0 downward binary32 0x2.602774p+0 : 0x3.e83778p-8 : inexact-ok
+= j0 tonearest binary32 0x2.602774p+0 : 0x3.e83778p-8 : inexact-ok
+= j0 towardzero binary32 0x2.602774p+0 : 0x3.e83778p-8 : inexact-ok
+= j0 upward binary32 0x2.602774p+0 : 0x3.e8377cp-8 : inexact-ok
+= j0 downward binary64 0x2.602774p+0 : 0x3.e83779fe1991p-8 : inexact-ok
+= j0 tonearest binary64 0x2.602774p+0 : 0x3.e83779fe19912p-8 : inexact-ok
+= j0 towardzero binary64 0x2.602774p+0 : 0x3.e83779fe1991p-8 : inexact-ok
+= j0 upward binary64 0x2.602774p+0 : 0x3.e83779fe19912p-8 : inexact-ok
+= j0 downward intel96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok
+= j0 tonearest intel96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok
+= j0 towardzero intel96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok
+= j0 upward intel96 0x2.602774p+0 : 0x3.e83779fe19911facp-8 : inexact-ok
+= j0 downward m68k96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok
+= j0 tonearest m68k96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok
+= j0 towardzero m68k96 0x2.602774p+0 : 0x3.e83779fe19911fa8p-8 : inexact-ok
+= j0 upward m68k96 0x2.602774p+0 : 0x3.e83779fe19911facp-8 : inexact-ok
+= j0 downward binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok
+= j0 tonearest binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok
+= j0 towardzero binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok
+= j0 upward binary128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab702p-8 : inexact-ok
+= j0 downward ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok
+= j0 tonearest ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok
+= j0 towardzero ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab7p-8 : inexact-ok
+= j0 upward ibm128 0x2.602774p+0 : 0x3.e83779fe19911fa806cee83ab8p-8 : inexact-ok
diff --git a/math/auto-libm-test-out-j1 b/math/auto-libm-test-out-j1
index db6896c..52a4e40 100644
--- a/math/auto-libm-test-out-j1
+++ b/math/auto-libm-test-out-j1
@@ -968,6 +968,31 @@ j1 0x1p-10000
= j1 tonearest binary128 0x1p-10000 : 0x8p-10004 : inexact-ok
= j1 towardzero binary128 0x1p-10000 : 0x7.fffffffffffffffffffffffffffcp-10004 : inexact-ok
= j1 upward binary128 0x1p-10000 : 0x8p-10004 : inexact-ok
+j1 0x3.ae4b2p+0
+= j1 downward binary32 0x3.ae4b2p+0 : 0xf.d085cp-8 : inexact-ok
+= j1 tonearest binary32 0x3.ae4b2p+0 : 0xf.d085cp-8 : inexact-ok
+= j1 towardzero binary32 0x3.ae4b2p+0 : 0xf.d085cp-8 : inexact-ok
+= j1 upward binary32 0x3.ae4b2p+0 : 0xf.d085dp-8 : inexact-ok
+= j1 downward binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f3p-8 : inexact-ok
+= j1 tonearest binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f3p-8 : inexact-ok
+= j1 towardzero binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f3p-8 : inexact-ok
+= j1 upward binary64 0x3.ae4b2p+0 : 0xf.d085c66e86f38p-8 : inexact-ok
+= j1 downward intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok
+= j1 tonearest intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok
+= j1 towardzero intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok
+= j1 upward intel96 0x3.ae4b2p+0 : 0xf.d085c66e86f3027p-8 : inexact-ok
+= j1 downward m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok
+= j1 tonearest m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok
+= j1 towardzero m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3026p-8 : inexact-ok
+= j1 upward m68k96 0x3.ae4b2p+0 : 0xf.d085c66e86f3027p-8 : inexact-ok
+= j1 downward binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d2p-8 : inexact-ok
+= j1 tonearest binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d2p-8 : inexact-ok
+= j1 towardzero binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d2p-8 : inexact-ok
+= j1 upward binary128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787d28p-8 : inexact-ok
+= j1 downward ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787cp-8 : inexact-ok
+= j1 tonearest ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787cp-8 : inexact-ok
+= j1 towardzero ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f787cp-8 : inexact-ok
+= j1 upward ibm128 0x3.ae4b2p+0 : 0xf.d085c66e86f30267f22d6f788p-8 : inexact-ok
j1 min
= j1 downward binary32 0x4p-128 : 0x1.fffff8p-128 : inexact-ok underflow errno-erange-ok
= j1 tonearest binary32 0x4p-128 : 0x2p-128 : inexact-ok underflow errno-erange-ok
diff --git a/math/auto-libm-test-out-lgamma b/math/auto-libm-test-out-lgamma
index e685783..36665b8 100644
--- a/math/auto-libm-test-out-lgamma
+++ b/math/auto-libm-test-out-lgamma
@@ -2201,6 +2201,31 @@ lgamma -0x1p-16494
= lgamma tonearest binary128 -0x4p-16496 : 0x2.ca8c50440f005913a49acbd2c4e8p+12 -1 : inexact-ok
= lgamma towardzero binary128 -0x4p-16496 : 0x2.ca8c50440f005913a49acbd2c4e6p+12 -1 : inexact-ok
= lgamma upward binary128 -0x4p-16496 : 0x2.ca8c50440f005913a49acbd2c4e8p+12 -1 : inexact-ok
+lgamma -0x3.ec4298p+0
+= lgamma downward binary32 -0x3.ec4298p+0 : -0x7.d809fp-4 1 : inexact-ok
+= lgamma tonearest binary32 -0x3.ec4298p+0 : -0x7.d809fp-4 1 : inexact-ok
+= lgamma towardzero binary32 -0x3.ec4298p+0 : -0x7.d809e8p-4 1 : inexact-ok
+= lgamma upward binary32 -0x3.ec4298p+0 : -0x7.d809e8p-4 1 : inexact-ok
+= lgamma downward binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fc4p-4 1 : inexact-ok
+= lgamma tonearest binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fcp-4 1 : inexact-ok
+= lgamma towardzero binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fcp-4 1 : inexact-ok
+= lgamma upward binary64 -0x3.ec4298p+0 : -0x7.d809ecd340fcp-4 1 : inexact-ok
+= lgamma downward intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16ep-4 1 : inexact-ok
+= lgamma tonearest intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok
+= lgamma towardzero intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok
+= lgamma upward intel96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok
+= lgamma downward m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16ep-4 1 : inexact-ok
+= lgamma tonearest m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok
+= lgamma towardzero m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok
+= lgamma upward m68k96 -0x3.ec4298p+0 : -0x7.d809ecd340fc16d8p-4 1 : inexact-ok
+= lgamma downward binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad116694p-4 1 : inexact-ok
+= lgamma tonearest binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad116694p-4 1 : inexact-ok
+= lgamma towardzero binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad11669p-4 1 : inexact-ok
+= lgamma upward binary128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad11669p-4 1 : inexact-ok
+= lgamma downward ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1168p-4 1 : inexact-ok
+= lgamma tonearest ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok
+= lgamma towardzero ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok
+= lgamma upward ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok
lgamma 0x3.12be0cp+120
= lgamma downward binary32 0x3.12be0cp+120 : 0xf.ffff1p+124 1 : inexact-ok
= lgamma tonearest binary32 0x3.12be0cp+120 : 0xf.ffff1p+124 1 : inexact-ok
diff --git a/math/auto-libm-test-out-sin b/math/auto-libm-test-out-sin
index 4826063..be9afb2 100644
--- a/math/auto-libm-test-out-sin
+++ b/math/auto-libm-test-out-sin
@@ -3118,6 +3118,31 @@ sin 0x3.042d88p+0
= sin tonearest ibm128 0x3.042d88p+0 : 0x1.ffc6da9f1ffed895f9fa424ba9p-4 : inexact-ok
= sin towardzero ibm128 0x3.042d88p+0 : 0x1.ffc6da9f1ffed895f9fa424ba9p-4 : inexact-ok
= sin upward ibm128 0x3.042d88p+0 : 0x1.ffc6da9f1ffed895f9fa424ba98p-4 : inexact-ok
+sin 0x1.d12ed2p-12
+= sin downward binary32 0x1.d12ed2p-12 : 0x1.d12edp-12 : inexact-ok
+= sin tonearest binary32 0x1.d12ed2p-12 : 0x1.d12edp-12 : inexact-ok
+= sin towardzero binary32 0x1.d12ed2p-12 : 0x1.d12edp-12 : inexact-ok
+= sin upward binary32 0x1.d12ed2p-12 : 0x1.d12ed2p-12 : inexact-ok
+= sin downward binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfp-12 : inexact-ok
+= sin tonearest binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffep-12 : inexact-ok
+= sin towardzero binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfp-12 : inexact-ok
+= sin upward binary64 0x1.d12ed2p-12 : 0x1.d12ed0fffffep-12 : inexact-ok
+= sin downward intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok
+= sin tonearest intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok
+= sin towardzero intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok
+= sin upward intel96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok
+= sin downward m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok
+= sin tonearest m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok
+= sin towardzero m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0ep-12 : inexact-ok
+= sin upward m68k96 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe1p-12 : inexact-ok
+= sin downward binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28232p-12 : inexact-ok
+= sin tonearest binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28233p-12 : inexact-ok
+= sin towardzero binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28232p-12 : inexact-ok
+= sin upward binary128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b28233p-12 : inexact-ok
+= sin downward ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b282p-12 : inexact-ok
+= sin tonearest ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b282p-12 : inexact-ok
+= sin towardzero ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b282p-12 : inexact-ok
+= sin upward ibm128 0x1.d12ed2p-12 : 0x1.d12ed0fffffdfe0f0008c8b2828p-12 : inexact-ok
sin max
= sin downward binary32 0xf.fffffp+124 : -0x8.599b4p-4 : inexact-ok
= sin tonearest binary32 0xf.fffffp+124 : -0x8.599b3p-4 : inexact-ok
diff --git a/math/auto-libm-test-out-tgamma b/math/auto-libm-test-out-tgamma
index cb12b2b..a3f4f8e 100644
--- a/math/auto-libm-test-out-tgamma
+++ b/math/auto-libm-test-out-tgamma
@@ -27303,3 +27303,28 @@ tgamma -0xd.cbf53d0e7d06p+0
= tgamma tonearest ibm128 -0xd.cbf53d0e7d06p+0 : 0x7.2508c022ac5a1f121d3ba32c5ap-36 : inexact-ok
= tgamma towardzero ibm128 -0xd.cbf53d0e7d06p+0 : 0x7.2508c022ac5a1f121d3ba32c58p-36 : inexact-ok
= tgamma upward ibm128 -0xd.cbf53d0e7d06p+0 : 0x7.2508c022ac5a1f121d3ba32c5ap-36 : inexact-ok
+tgamma -0x3.0aa534p+0
+= tgamma downward binary32 -0x3.0aa534p+0 : 0x3.d05ef8p+0 : inexact-ok
+= tgamma tonearest binary32 -0x3.0aa534p+0 : 0x3.d05efcp+0 : inexact-ok
+= tgamma towardzero binary32 -0x3.0aa534p+0 : 0x3.d05ef8p+0 : inexact-ok
+= tgamma upward binary32 -0x3.0aa534p+0 : 0x3.d05efcp+0 : inexact-ok
+= tgamma downward binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49ccp+0 : inexact-ok
+= tgamma tonearest binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49ccp+0 : inexact-ok
+= tgamma towardzero binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49ccp+0 : inexact-ok
+= tgamma upward binary64 -0x3.0aa534p+0 : 0x3.d05efb28d49cep+0 : inexact-ok
+= tgamma downward intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok
+= tgamma tonearest intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok
+= tgamma towardzero intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok
+= tgamma upward intel96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok
+= tgamma downward m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok
+= tgamma tonearest m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok
+= tgamma towardzero m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc498p+0 : inexact-ok
+= tgamma upward m68k96 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49cp+0 : inexact-ok
+= tgamma downward binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a28p+0 : inexact-ok
+= tgamma tonearest binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a28p+0 : inexact-ok
+= tgamma towardzero binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a28p+0 : inexact-ok
+= tgamma upward binary128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0a2ap+0 : inexact-ok
+= tgamma downward ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0ap+0 : inexact-ok
+= tgamma tonearest ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0ap+0 : inexact-ok
+= tgamma towardzero ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0ap+0 : inexact-ok
+= tgamma upward ibm128 -0x3.0aa534p+0 : 0x3.d05efb28d49cc49b798cfd0f0bp+0 : inexact-ok
diff --git a/math/auto-libm-test-out-y0 b/math/auto-libm-test-out-y0
index cc5158e..8ebb585 100644
--- a/math/auto-libm-test-out-y0
+++ b/math/auto-libm-test-out-y0
@@ -795,6 +795,31 @@ y0 0x1p-10000
= y0 tonearest binary128 0x1p-10000 : -0x1.13cc92aab9d385d1d0f2693cb631p+12 : inexact-ok
= y0 towardzero binary128 0x1p-10000 : -0x1.13cc92aab9d385d1d0f2693cb631p+12 : inexact-ok
= y0 upward binary128 0x1p-10000 : -0x1.13cc92aab9d385d1d0f2693cb631p+12 : inexact-ok
+y0 0xd.3432bp-4
+= y0 downward binary32 0xd.3432bp-4 : -0xf.fdd88p-8 : inexact-ok
+= y0 tonearest binary32 0xd.3432bp-4 : -0xf.fdd87p-8 : inexact-ok
+= y0 towardzero binary32 0xd.3432bp-4 : -0xf.fdd87p-8 : inexact-ok
+= y0 upward binary32 0xd.3432bp-4 : -0xf.fdd87p-8 : inexact-ok
+= y0 downward binary64 0xd.3432bp-4 : -0xf.fdd871793bc78p-8 : inexact-ok
+= y0 tonearest binary64 0xd.3432bp-4 : -0xf.fdd871793bc7p-8 : inexact-ok
+= y0 towardzero binary64 0xd.3432bp-4 : -0xf.fdd871793bc7p-8 : inexact-ok
+= y0 upward binary64 0xd.3432bp-4 : -0xf.fdd871793bc7p-8 : inexact-ok
+= y0 downward intel96 0xd.3432bp-4 : -0xf.fdd871793bc71fap-8 : inexact-ok
+= y0 tonearest intel96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok
+= y0 towardzero intel96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok
+= y0 upward intel96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok
+= y0 downward m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71fap-8 : inexact-ok
+= y0 tonearest m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok
+= y0 towardzero m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok
+= y0 upward m68k96 0xd.3432bp-4 : -0xf.fdd871793bc71f9p-8 : inexact-ok
+= y0 downward binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44118p-8 : inexact-ok
+= y0 tonearest binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44118p-8 : inexact-ok
+= y0 towardzero binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b4411p-8 : inexact-ok
+= y0 upward binary128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b4411p-8 : inexact-ok
+= y0 downward ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b444p-8 : inexact-ok
+= y0 tonearest ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44p-8 : inexact-ok
+= y0 towardzero ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44p-8 : inexact-ok
+= y0 upward ibm128 0xd.3432bp-4 : -0xf.fdd871793bc71f92d6b137b44p-8 : inexact-ok
y0 min
= y0 downward binary32 0x4p-128 : -0x3.7ac89cp+4 : inexact-ok
= y0 tonearest binary32 0x4p-128 : -0x3.7ac89cp+4 : inexact-ok
diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
index d293214..670a8c3 100644
--- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
+++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps
@@ -766,7 +766,7 @@ ldouble: 2
Function: "cosh":
double: 1
-float: 1
+float: 2
float128: 1
ldouble: 2
@@ -1125,6 +1125,7 @@ ldouble: 5
Function: "exp":
double: 1
+float: 1
float128: 1
ldouble: 1
@@ -1250,7 +1251,7 @@ ldouble: 1
Function: "j0":
double: 2
-float: 2
+float: 5
float128: 2
ldouble: 2
@@ -1270,13 +1271,13 @@ Function: "j0_upward":
double: 3
float: 3
float128: 5
-ldouble: 4
+ldouble: 6
Function: "j1":
double: 2
-float: 2
+float: 5
float128: 4
-ldouble: 1
+ldouble: 5
Function: "j1_downward":
double: 3
@@ -1575,13 +1576,13 @@ ldouble: 5
Function: "tgamma_downward":
double: 6
-float: 5
+float: 7
float128: 5
ldouble: 5
Function: "tgamma_towardzero":
double: 6
-float: 5
+float: 7
float128: 5
ldouble: 5
@@ -1607,37 +1608,37 @@ Function: "y0_towardzero":
double: 3
float: 3
float128: 3
-ldouble: 5
+ldouble: 6
Function: "y0_upward":
double: 3
float: 5
float128: 3
-ldouble: 3
+ldouble: 5
Function: "y1":
double: 3
float: 2
-float128: 2
-ldouble: 2
+float128: 5
+ldouble: 3
Function: "y1_downward":
double: 3
-float: 4
-float128: 4
+float: 5
+float128: 5
ldouble: 7
Function: "y1_towardzero":
double: 3
-float: 2
-float128: 2
+float: 4
+float128: 6
ldouble: 5
Function: "y1_upward":
double: 7
float: 3
-float128: 5
-ldouble: 7
+float128: 6
+ldouble: 9
Function: "yn":
double: 3
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 7dc9252..196e60d 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -73,7 +73,7 @@ ldouble: 1
Function: "asinh":
double: 1
-float: 1
+float: 2
float128: 3
ldouble: 3
@@ -761,6 +761,7 @@ ldouble: 1
Function: "cos":
double: 1
+float: 1
float128: 1
ldouble: 1
@@ -804,7 +805,7 @@ float: 1
Function: "cosh":
double: 1
-float: 1
+float: 2
float128: 1
ldouble: 2
@@ -1135,7 +1136,7 @@ ldouble: 1
Function: "erfc":
double: 3
-float: 2
+float: 3
float128: 2
ldouble: 3
@@ -1158,11 +1159,13 @@ float128: 5
ldouble: 5
Function: "exp":
+float: 1
float128: 1
ldouble: 1
Function: "exp10":
double: 2
+float: 1
float128: 2
ldouble: 1
@@ -1269,22 +1272,22 @@ ldouble: 4
Function: "gamma":
double: 4
-float: 4
+float: 7
ldouble: 4
Function: "gamma_downward":
double: 5
-float: 4
+float: 7
ldouble: 7
Function: "gamma_towardzero":
double: 5
-float: 4
+float: 6
ldouble: 7
Function: "gamma_upward":
double: 5
-float: 5
+float: 6
ldouble: 6
Function: "hypot":
@@ -1309,7 +1312,7 @@ ldouble: 1
Function: "j0":
double: 2
-float: 2
+float: 8
float128: 2
ldouble: 2
@@ -1320,26 +1323,26 @@ float128: 4
ldouble: 4
Function: "j0_towardzero":
-double: 3
-float: 2
+double: 4
+float: 5
float128: 2
ldouble: 5
Function: "j0_upward":
-double: 3
-float: 2
+double: 4
+float: 5
float128: 5
-ldouble: 4
+ldouble: 6
Function: "j1":
-double: 1
-float: 2
+double: 2
+float: 9
float128: 4
-ldouble: 1
+ldouble: 5
Function: "j1_downward":
double: 3
-float: 3
+float: 5
float128: 4
ldouble: 4
@@ -1381,25 +1384,25 @@ ldouble: 5
Function: "lgamma":
double: 4
-float: 4
+float: 7
float128: 5
ldouble: 4
Function: "lgamma_downward":
double: 5
-float: 4
+float: 7
float128: 8
ldouble: 7
Function: "lgamma_towardzero":
double: 5
-float: 4
+float: 6
float128: 5
ldouble: 7
Function: "lgamma_upward":
double: 5
-float: 5
+float: 6
float128: 8
ldouble: 6
@@ -1562,6 +1565,7 @@ float: 3
Function: "sin":
double: 1
+float: 1
float128: 1
ldouble: 1
@@ -1719,37 +1723,37 @@ ldouble: 4
Function: "tgamma":
double: 5
-float: 5
+float: 8
float128: 4
ldouble: 5
Function: "tgamma_downward":
double: 5
-float: 5
+float: 7
float128: 5
ldouble: 5
Function: "tgamma_towardzero":
double: 5
-float: 5
+float: 7
float128: 5
ldouble: 5
Function: "tgamma_upward":
double: 5
-float: 5
+float: 8
float128: 4
ldouble: 5
Function: "y0":
-double: 2
-float: 1
+double: 3
+float: 8
float128: 3
ldouble: 1
Function: "y0_downward":
double: 3
-float: 4
+float: 6
float128: 4
ldouble: 5
@@ -1757,37 +1761,37 @@ Function: "y0_towardzero":
double: 3
float: 3
float128: 3
-ldouble: 5
+ldouble: 6
Function: "y0_upward":
double: 3
-float: 5
+float: 6
float128: 3
-ldouble: 3
+ldouble: 5
Function: "y1":
-double: 3
-float: 2
-float128: 2
-ldouble: 2
+double: 6
+float: 9
+float128: 5
+ldouble: 3
Function: "y1_downward":
double: 3
float: 2
-float128: 4
+float128: 5
ldouble: 7
Function: "y1_towardzero":
-double: 3
-float: 2
-float128: 2
+double: 4
+float: 5
+float128: 6
ldouble: 5
Function: "y1_upward":
double: 7
-float: 2
-float128: 5
-ldouble: 7
+float: 9
+float128: 6
+ldouble: 9
Function: "yn":
double: 3