add inputs to auto-libm-test-in yielding larger errors

Message ID mwmtz59ukg.fsf@tomate.loria.fr
State Committed
Delegated to: Paul Zimmermann
Headers
Series add inputs to auto-libm-test-in yielding larger errors |

Commit Message

Paul Zimmermann Nov. 25, 2020, 6:10 p.m. UTC
  Hi,

the following patch adds inputs to auto-libm-test-in that yield larger
errors for double precision (binary64) on x86_64. In particular for exp
and log the maximal ulp error increases from 0 to 1.

Paul Zimmermann

From 0da846118fbfcd3c92e03f4de6a90361dcd12969 Mon Sep 17 00:00:00 2001
From: Paul Zimmermann <Paul.Zimmermann@inria.fr>
Date: Wed, 25 Nov 2020 19:03:33 +0100
Subject: [PATCH] add inputs to auto-libm-test-in yielding larger errors
 (binary64, x86_64)

---
 math/auto-libm-test-in            | 16 +++++++
 math/auto-libm-test-out-asinh     | 69 +++++++++++++++++++++++++++++++
 math/auto-libm-test-out-cbrt      | 69 +++++++++++++++++++++++++++++++
 math/auto-libm-test-out-cosh      | 69 +++++++++++++++++++++++++++++++
 math/auto-libm-test-out-erfc      | 69 +++++++++++++++++++++++++++++++
 math/auto-libm-test-out-exp       | 69 +++++++++++++++++++++++++++++++
 math/auto-libm-test-out-log       | 69 +++++++++++++++++++++++++++++++
 math/auto-libm-test-out-sinh      | 69 +++++++++++++++++++++++++++++++
 math/auto-libm-test-out-tgamma    | 69 +++++++++++++++++++++++++++++++
 sysdeps/x86_64/fpu/libm-test-ulps | 24 ++++++-----
 10 files changed, 581 insertions(+), 11 deletions(-)
  

Comments

Joseph Myers Nov. 25, 2020, 10:05 p.m. UTC | #1
On Wed, 25 Nov 2020, Paul Zimmermann wrote:

>        Hi,
> 
> the following patch adds inputs to auto-libm-test-in that yield larger
> errors for double precision (binary64) on x86_64. In particular for exp
> and log the maximal ulp error increases from 0 to 1.

OK.
  
Paul Zimmermann Nov. 26, 2020, 8:16 a.m. UTC | #2
> Date: Wed, 25 Nov 2020 22:05:20 +0000
> From: Joseph Myers <joseph@codesourcery.com>
> 
> On Wed, 25 Nov 2020, Paul Zimmermann wrote:
> 
> >        Hi,
> > 
> > the following patch adds inputs to auto-libm-test-in that yield larger
> > errors for double precision (binary64) on x86_64. In particular for exp
> > and log the maximal ulp error increases from 0 to 1.
> 
> OK.
> 
> -- 
> Joseph S. Myers
> joseph@codesourcery.com

thank you Joseph, I will commit that patch.

I also found a case where lgamma() yields more than 10 ulps of error:

Checking lgamma
x=-0x1.f60c969a239f2p+1 d=1.0410549778851831e+01

This should be considered as a bug and entered into bugzilla?

Paul
  
Joseph Myers Nov. 27, 2020, 7:13 p.m. UTC | #3
On Thu, 26 Nov 2020, Paul Zimmermann wrote:

> thank you Joseph, I will commit that patch.
> 
> I also found a case where lgamma() yields more than 10 ulps of error:
> 
> Checking lgamma
> x=-0x1.f60c969a239f2p+1 d=1.0410549778851831e+01
> 
> This should be considered as a bug and entered into bugzilla?

Any case where a libm function produces errors exceeding the maximum 
accepted in ulps files (9 ulps for most formats, 16 for IBM long double), 
in any rounding mode, measured in the way the libm testsuite does 
(comparing against a correctly rounded result for that rounding mode, not 
against an infinite-precision result) should be reported as a bug to 
Bugzilla if there isn't already a bug open for inaccuracy of that 
function.
  
Paul Zimmermann Nov. 30, 2020, 10:34 a.m. UTC | #4
Dear Joseph,

submitted as https://sourceware.org/bugzilla/show_bug.cgi?id=26982, and a
similar one for tgamma (https://sourceware.org/bugzilla/show_bug.cgi?id=26983).

Paul

> Date: Fri, 27 Nov 2020 19:13:04 +0000
> From: Joseph Myers <joseph@codesourcery.com>
> CC: <libc-alpha@sourceware.org>
> User-Agent: Alpine 2.22 (DEB 394 2020-01-19)
> 
> On Thu, 26 Nov 2020, Paul Zimmermann wrote:
> 
> > thank you Joseph, I will commit that patch.
> > 
> > I also found a case where lgamma() yields more than 10 ulps of error:
> > 
> > Checking lgamma
> > x=-0x1.f60c969a239f2p+1 d=1.0410549778851831e+01
> > 
> > This should be considered as a bug and entered into bugzilla?
> 
> Any case where a libm function produces errors exceeding the maximum 
> accepted in ulps files (9 ulps for most formats, 16 for IBM long double), 
> in any rounding mode, measured in the way the libm testsuite does 
> (comparing against a correctly rounded result for that rounding mode, not 
> against an infinite-precision result) should be reported as a bug to 
> Bugzilla if there isn't already a bug open for inaccuracy of that 
> function.
> 
> -- 
> Joseph S. Myers
> joseph@codesourcery.com
  
Joseph Myers Nov. 30, 2020, 10:21 p.m. UTC | #5
On Mon, 30 Nov 2020, Paul Zimmermann wrote:

>        Dear Joseph,
> 
> submitted as https://sourceware.org/bugzilla/show_bug.cgi?id=26982, and a
> similar one for tgamma (https://sourceware.org/bugzilla/show_bug.cgi?id=26983).

Thanks.  It would be interesting to know if similar cases can be found for 
other floating-point formats (inputs with large errors for different 
formats could go in the same bugs rather than needing a separate bug for 
each format) as that might affect how many implementations need to get 
similar fixes.  You've done exhaustive searches for float.  But have you 
looked for such large errors for these functions for ldbl-96 (x86 extended 
precision) or ldbl-128 (binary128), for example?  (Or for ldbl-128ibm, 
with the larger threshold of permitted errors there and the definition of 
ulps that treats it like a format with exactly 106 bits of precision.)
  
Paul Zimmermann Dec. 1, 2020, 10:29 a.m. UTC | #6
Dear Joseph,

> Date: Mon, 30 Nov 2020 22:21:24 +0000
> From: Joseph Myers <joseph@codesourcery.com>
> 
> On Mon, 30 Nov 2020, Paul Zimmermann wrote:
> 
> >        Dear Joseph,
> > 
> > submitted as https://sourceware.org/bugzilla/show_bug.cgi?id=26982, and a
> > similar one for tgamma (https://sourceware.org/bugzilla/show_bug.cgi?id=26983).
> 
> Thanks.  It would be interesting to know if similar cases can be found for 
> other floating-point formats (inputs with large errors for different 
> formats could go in the same bugs rather than needing a separate bug for 
> each format) as that might affect how many implementations need to get 
> similar fixes.  You've done exhaustive searches for float.  But have you 
> looked for such large errors for these functions for ldbl-96 (x86 extended 
> precision) or ldbl-128 (binary128), for example?  (Or for ldbl-128ibm, 
> with the larger threshold of permitted errors there and the definition of 
> ulps that treats it like a format with exactly 106 bits of precision.)

so far I plan to look for large errors for binary32, binary64 and binary128,
for the 6 following libraries: glibc, Intel Math Library, AMD Libm, Redhat
newlib, OpenLibm and Musl (as far as I know only glibc and the Intel Math
Library do support binary128), on x86_64. I also plan to deal with bivariate
functions (pow, atan2, hypot). I will publish the largest errors found (with
corresponding inputs), as I already did for binary32.

For other formats, it should be easy to adapt my search program. If someone
is interested to help with ldbl-96 or ldbl-128ibm, please tell me and I will
send you my program.

Paul
  
Joseph Myers Dec. 1, 2020, 10:48 p.m. UTC | #7
On Tue, 1 Dec 2020, Paul Zimmermann wrote:

> Library do support binary128), on x86_64. I also plan to deal with bivariate
> functions (pow, atan2, hypot). I will publish the largest errors found (with

Complex functions are mostly essentially bivariate real ones (in the case 
of cabs and carg, trivial wrappers round hypot and atan2) and information 
about largest errors found would be interesting for those as well.  (cpow 
is a function of four real variables, but we already have bug 14473 for 
that being inaccurate, so don't need other bug reports for it.)
  
Paul Zimmermann Dec. 2, 2020, 6:42 a.m. UTC | #8
Joseph,

> Complex functions are mostly essentially bivariate real ones (in the case 
> of cabs and carg, trivial wrappers round hypot and atan2) and information 
> about largest errors found would be interesting for those as well.  (cpow 
> is a function of four real variables, but we already have bug 14473 for 
> that being inaccurate, so don't need other bug reports for it.)

so far I only plan to study real functions, but indeed it might be interesting
to study complex functions too.

Paul
  
Siddhesh Poyarekar Dec. 21, 2020, 5:09 a.m. UTC | #9
On 11/25/20 11:40 PM, Paul Zimmermann wrote:
>         Hi,
> 
> the following patch adds inputs to auto-libm-test-in that yield larger
> errors for double precision (binary64) on x86_64. In particular for exp
> and log the maximal ulp error increases from 0 to 1.
> 
> Paul Zimmermann
> 
>  From 0da846118fbfcd3c92e03f4de6a90361dcd12969 Mon Sep 17 00:00:00 2001
> From: Paul Zimmermann <Paul.Zimmermann@inria.fr>
> Date: Wed, 25 Nov 2020 19:03:33 +0100
> Subject: [PATCH] add inputs to auto-libm-test-in yielding larger errors
>   (binary64, x86_64)
> 

I've pushed this for you Paul.

Siddhesh
  

Patch

diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 5d488a8711..c614baa810 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -373,6 +373,8 @@  asinh 0x1p-500
 asinh 0x1p-5000
 # the next value generates larger error bounds on x86_64 (binary32)
 asinh 0xf.96c69p-8
+# the next value generates larger error bounds on x86_64 (binary64)
+asinh 0x1.023cfeab10a13p-2
 asinh min
 asinh -min
 asinh min_subnorm
@@ -3863,6 +3865,8 @@  cbrt 0x1.bd0098p-104
 cbrt -0x3.300d34p+0
 cbrt 0x6.247f5p-4
 cbrt -0x3.48648028cb464p+0
+# the next value generates larger error bounds on x86_64 (binary64)
+cbrt -0x1.7cec1dab41272p-230
 cbrt max xfail:ibm128-libgcc
 cbrt -max xfail:ibm128-libgcc
 cbrt min
@@ -4488,6 +4492,8 @@  cosh -0x2.c5d37700c6bb03a6c24b6c9b494cp+12
 cosh -0x2.c5d37700c6bb03a6c24b6c9b494ep+12
 # the next value generates larger error bounds on x86_64 (binary32)
 cosh 0x5.8bfe6p+4
+# the next value generates larger error bounds on x86_64 (binary64)
+cosh 0x1.633c457f1e66bp+9
 
 cpow 1 0 0 0 ignore-zero-inf-sign
 cpow 2 0 10 0 ignore-zero-inf-sign
@@ -5020,6 +5026,8 @@  erfc 0x2.56af04p+0
 erfc 0x2.b7f8cb76737d2af98dead7c4c5eep+0
 erfc 0x2.dfb9b4p+0
 erfc 0x1.e33c9ep+0
+# the next value generates larger error bounds on x86_64 (binary64)
+erfc 0x1.3ffcbf39febb4p+0
 
 exp 0
 exp -0
@@ -5106,6 +5114,8 @@  exp 0xd.89746a799ac4eedp+0
 exp -0x6.58b64p-4
 # the next value generates larger error bounds on x86_64 (binary32)
 exp 0x1.fefe02p-16
+# the next value generates larger error bounds on x86_64 (binary64)
+exp -0x1.0c4af1ad4ee36p+9
 
 exp10 0
 exp10 -0
@@ -6424,6 +6434,8 @@  log 0x1.0b5c1ep+36
 log 0x2.1b17c2887e938p+928
 log 0x1.929d9cp+0
 log 0x1.770072p+0
+# the next value generates larger error bounds on x86_64 (binary64)
+log 0x1.d405118796bd8p-1
 
 log10 1
 log10 0.1
@@ -7340,6 +7352,8 @@  sinh 0x2.c5d37700c6bb03a4p+12
 sinh 0x2.c5d37700c6bb03a8p+12
 sinh 0x2.c5d37700c6bb03a6c24b6c9b494cp+12
 sinh 0x2.c5d37700c6bb03a6c24b6c9b494ep+12
+# the next value generates larger error bounds on x86_64 (binary64)
+sinh -0x1.633c62890fa14p+9
 
 sub 0 0
 sub 0 -0
@@ -8183,6 +8197,8 @@  tgamma -0x6.ce9158p+0
 tgamma -0xd.cbf53d0e7d06p+0
 # the next value generates larger error bounds on x86_64 (binary32)
 tgamma -0x3.0aa534p+0
+# the next value generates larger error bounds on x86_64 (binary64)
+tgamma -0x1.62b8c36c7180bp+4
 
 y0 0.125
 y0 0.75
diff --git a/math/auto-libm-test-out-asinh b/math/auto-libm-test-out-asinh
index 648fe066cb..85efa466f4 100644
--- a/math/auto-libm-test-out-asinh
+++ b/math/auto-libm-test-out-asinh
@@ -2531,6 +2531,75 @@  asinh 0xf.96c69p-8
 = 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 0x1.023cfeab10a13p-2
+= asinh downward binary32 0x4.08f4p-4 : 0x3.fe4e6p-4 : inexact-ok
+= asinh tonearest binary32 0x4.08f4p-4 : 0x3.fe4e64p-4 : inexact-ok
+= asinh towardzero binary32 0x4.08f4p-4 : 0x3.fe4e6p-4 : inexact-ok
+= asinh upward binary32 0x4.08f4p-4 : 0x3.fe4e64p-4 : inexact-ok
+= asinh downward binary64 0x4.08f4p-4 : 0x3.fe4e62c525da4p-4 : inexact-ok
+= asinh tonearest binary64 0x4.08f4p-4 : 0x3.fe4e62c525da6p-4 : inexact-ok
+= asinh towardzero binary64 0x4.08f4p-4 : 0x3.fe4e62c525da4p-4 : inexact-ok
+= asinh upward binary64 0x4.08f4p-4 : 0x3.fe4e62c525da6p-4 : inexact-ok
+= asinh downward intel96 0x4.08f4p-4 : 0x3.fe4e62c525da5878p-4 : inexact-ok
+= asinh tonearest intel96 0x4.08f4p-4 : 0x3.fe4e62c525da587cp-4 : inexact-ok
+= asinh towardzero intel96 0x4.08f4p-4 : 0x3.fe4e62c525da5878p-4 : inexact-ok
+= asinh upward intel96 0x4.08f4p-4 : 0x3.fe4e62c525da587cp-4 : inexact-ok
+= asinh downward m68k96 0x4.08f4p-4 : 0x3.fe4e62c525da5878p-4 : inexact-ok
+= asinh tonearest m68k96 0x4.08f4p-4 : 0x3.fe4e62c525da587cp-4 : inexact-ok
+= asinh towardzero m68k96 0x4.08f4p-4 : 0x3.fe4e62c525da5878p-4 : inexact-ok
+= asinh upward m68k96 0x4.08f4p-4 : 0x3.fe4e62c525da587cp-4 : inexact-ok
+= asinh downward binary128 0x4.08f4p-4 : 0x3.fe4e62c525da587ab7dc0384ede8p-4 : inexact-ok
+= asinh tonearest binary128 0x4.08f4p-4 : 0x3.fe4e62c525da587ab7dc0384edeap-4 : inexact-ok
+= asinh towardzero binary128 0x4.08f4p-4 : 0x3.fe4e62c525da587ab7dc0384ede8p-4 : inexact-ok
+= asinh upward binary128 0x4.08f4p-4 : 0x3.fe4e62c525da587ab7dc0384edeap-4 : inexact-ok
+= asinh downward ibm128 0x4.08f4p-4 : 0x3.fe4e62c525da587ab7dc0384edp-4 : inexact-ok
+= asinh tonearest ibm128 0x4.08f4p-4 : 0x3.fe4e62c525da587ab7dc0384eep-4 : inexact-ok
+= asinh towardzero ibm128 0x4.08f4p-4 : 0x3.fe4e62c525da587ab7dc0384edp-4 : inexact-ok
+= asinh upward ibm128 0x4.08f4p-4 : 0x3.fe4e62c525da587ab7dc0384eep-4 : inexact-ok
+= asinh downward binary32 0x4.08f3f8p-4 : 0x3.fe4e58p-4 : inexact-ok
+= asinh tonearest binary32 0x4.08f3f8p-4 : 0x3.fe4e5cp-4 : inexact-ok
+= asinh towardzero binary32 0x4.08f3f8p-4 : 0x3.fe4e58p-4 : inexact-ok
+= asinh upward binary32 0x4.08f3f8p-4 : 0x3.fe4e5cp-4 : inexact-ok
+= asinh downward binary64 0x4.08f3f8p-4 : 0x3.fe4e5b035250ep-4 : inexact-ok
+= asinh tonearest binary64 0x4.08f3f8p-4 : 0x3.fe4e5b035251p-4 : inexact-ok
+= asinh towardzero binary64 0x4.08f3f8p-4 : 0x3.fe4e5b035250ep-4 : inexact-ok
+= asinh upward binary64 0x4.08f3f8p-4 : 0x3.fe4e5b035251p-4 : inexact-ok
+= asinh downward intel96 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72p-4 : inexact-ok
+= asinh tonearest intel96 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72p-4 : inexact-ok
+= asinh towardzero intel96 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72p-4 : inexact-ok
+= asinh upward intel96 0x4.08f3f8p-4 : 0x3.fe4e5b035250f724p-4 : inexact-ok
+= asinh downward m68k96 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72p-4 : inexact-ok
+= asinh tonearest m68k96 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72p-4 : inexact-ok
+= asinh towardzero m68k96 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72p-4 : inexact-ok
+= asinh upward m68k96 0x4.08f3f8p-4 : 0x3.fe4e5b035250f724p-4 : inexact-ok
+= asinh downward binary128 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72070a4b6fdf4c4p-4 : inexact-ok
+= asinh tonearest binary128 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72070a4b6fdf4c6p-4 : inexact-ok
+= asinh towardzero binary128 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72070a4b6fdf4c4p-4 : inexact-ok
+= asinh upward binary128 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72070a4b6fdf4c6p-4 : inexact-ok
+= asinh downward ibm128 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72070a4b6fdf4p-4 : inexact-ok
+= asinh tonearest ibm128 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72070a4b6fdf5p-4 : inexact-ok
+= asinh towardzero ibm128 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72070a4b6fdf4p-4 : inexact-ok
+= asinh upward ibm128 0x4.08f3f8p-4 : 0x3.fe4e5b035250f72070a4b6fdf5p-4 : inexact-ok
+= asinh downward binary64 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef72p-4 : inexact-ok
+= asinh tonearest binary64 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef74p-4 : inexact-ok
+= asinh towardzero binary64 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef72p-4 : inexact-ok
+= asinh upward binary64 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef74p-4 : inexact-ok
+= asinh downward intel96 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cdp-4 : inexact-ok
+= asinh tonearest intel96 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cdp-4 : inexact-ok
+= asinh towardzero intel96 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cdp-4 : inexact-ok
+= asinh upward intel96 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cd4p-4 : inexact-ok
+= asinh downward m68k96 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cdp-4 : inexact-ok
+= asinh tonearest m68k96 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cdp-4 : inexact-ok
+= asinh towardzero m68k96 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cdp-4 : inexact-ok
+= asinh upward m68k96 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cd4p-4 : inexact-ok
+= asinh downward binary128 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cd0062bafd4f43ep-4 : inexact-ok
+= asinh tonearest binary128 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cd0062bafd4f44p-4 : inexact-ok
+= asinh towardzero binary128 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cd0062bafd4f43ep-4 : inexact-ok
+= asinh upward binary128 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cd0062bafd4f44p-4 : inexact-ok
+= asinh downward ibm128 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cd0062bafd4f4p-4 : inexact-ok
+= asinh tonearest ibm128 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cd0062bafd4f4p-4 : inexact-ok
+= asinh towardzero ibm128 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cd0062bafd4f4p-4 : inexact-ok
+= asinh upward ibm128 0x4.08f3faac4284cp-4 : 0x3.fe4e5d9acef73cd0062bafd4f5p-4 : 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-cbrt b/math/auto-libm-test-out-cbrt
index 3a5dfe35e9..90f1b913b6 100644
--- a/math/auto-libm-test-out-cbrt
+++ b/math/auto-libm-test-out-cbrt
@@ -946,6 +946,75 @@  cbrt -0x3.48648028cb464p+0
 = cbrt tonearest ibm128 -0x3.48648028cb464p+0 : -0x1.7c7862db462ecf3cf63a9a1d7f8p+0 : inexact-ok
 = cbrt towardzero ibm128 -0x3.48648028cb464p+0 : -0x1.7c7862db462ecf3cf63a9a1d7fp+0 : inexact-ok
 = cbrt upward ibm128 -0x3.48648028cb464p+0 : -0x1.7c7862db462ecf3cf63a9a1d7fp+0 : inexact-ok
+cbrt -0x1.7cec1dab41272p-230
+= cbrt downward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt tonearest binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt towardzero binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt upward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt downward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt tonearest binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt towardzero binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt upward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt downward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt tonearest intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt towardzero intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt upward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt downward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt tonearest m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt towardzero m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt upward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt downward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt tonearest binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt towardzero binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt upward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt downward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt tonearest ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt towardzero ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt upward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= cbrt downward binary32 -0x8p-152 : -0x5.0a28cp-52 : inexact-ok
+= cbrt tonearest binary32 -0x8p-152 : -0x5.0a28cp-52 : inexact-ok
+= cbrt towardzero binary32 -0x8p-152 : -0x5.0a28b8p-52 : inexact-ok
+= cbrt upward binary32 -0x8p-152 : -0x5.0a28b8p-52 : inexact-ok
+= cbrt downward binary64 -0x8p-152 : -0x5.0a28be635ca2cp-52 : inexact-ok
+= cbrt tonearest binary64 -0x8p-152 : -0x5.0a28be635ca2cp-52 : inexact-ok
+= cbrt towardzero binary64 -0x8p-152 : -0x5.0a28be635ca28p-52 : inexact-ok
+= cbrt upward binary64 -0x8p-152 : -0x5.0a28be635ca28p-52 : inexact-ok
+= cbrt downward intel96 -0x8p-152 : -0x5.0a28be635ca2b89p-52 : inexact-ok
+= cbrt tonearest intel96 -0x8p-152 : -0x5.0a28be635ca2b888p-52 : inexact-ok
+= cbrt towardzero intel96 -0x8p-152 : -0x5.0a28be635ca2b888p-52 : inexact-ok
+= cbrt upward intel96 -0x8p-152 : -0x5.0a28be635ca2b888p-52 : inexact-ok
+= cbrt downward m68k96 -0x8p-152 : -0x5.0a28be635ca2b89p-52 : inexact-ok
+= cbrt tonearest m68k96 -0x8p-152 : -0x5.0a28be635ca2b888p-52 : inexact-ok
+= cbrt towardzero m68k96 -0x8p-152 : -0x5.0a28be635ca2b888p-52 : inexact-ok
+= cbrt upward m68k96 -0x8p-152 : -0x5.0a28be635ca2b888p-52 : inexact-ok
+= cbrt downward binary128 -0x8p-152 : -0x5.0a28be635ca2b888f76adc56f898p-52 : inexact-ok
+= cbrt tonearest binary128 -0x8p-152 : -0x5.0a28be635ca2b888f76adc56f894p-52 : inexact-ok
+= cbrt towardzero binary128 -0x8p-152 : -0x5.0a28be635ca2b888f76adc56f894p-52 : inexact-ok
+= cbrt upward binary128 -0x8p-152 : -0x5.0a28be635ca2b888f76adc56f894p-52 : inexact-ok
+= cbrt downward ibm128 -0x8p-152 : -0x5.0a28be635ca2b888f76adc56fap-52 : inexact-ok
+= cbrt tonearest ibm128 -0x8p-152 : -0x5.0a28be635ca2b888f76adc56f8p-52 : inexact-ok
+= cbrt towardzero ibm128 -0x8p-152 : -0x5.0a28be635ca2b888f76adc56f8p-52 : inexact-ok
+= cbrt upward ibm128 -0x8p-152 : -0x5.0a28be635ca2b888f76adc56f8p-52 : inexact-ok
+= cbrt downward binary64 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf918p-80 : inexact-ok
+= cbrt tonearest binary64 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf918p-80 : inexact-ok
+= cbrt towardzero binary64 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf9178p-80 : inexact-ok
+= cbrt upward binary64 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf9178p-80 : inexact-ok
+= cbrt downward intel96 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9ep-80 : inexact-ok
+= cbrt tonearest intel96 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9ep-80 : inexact-ok
+= cbrt towardzero intel96 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dp-80 : inexact-ok
+= cbrt upward intel96 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dp-80 : inexact-ok
+= cbrt downward m68k96 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9ep-80 : inexact-ok
+= cbrt tonearest m68k96 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9ep-80 : inexact-ok
+= cbrt towardzero m68k96 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dp-80 : inexact-ok
+= cbrt upward m68k96 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dp-80 : inexact-ok
+= cbrt downward binary128 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dad6c6858ba3d8p-80 : inexact-ok
+= cbrt tonearest binary128 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dad6c6858ba3d8p-80 : inexact-ok
+= cbrt towardzero binary128 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dad6c6858ba3dp-80 : inexact-ok
+= cbrt upward binary128 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dad6c6858ba3dp-80 : inexact-ok
+= cbrt downward ibm128 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dad6c6858ba4p-80 : inexact-ok
+= cbrt tonearest ibm128 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dad6c6858ba4p-80 : inexact-ok
+= cbrt towardzero ibm128 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dad6c6858bap-80 : inexact-ok
+= cbrt upward ibm128 -0x5.f3b076ad049c8p-232 : -0xb.81d0965bf917c9dad6c6858bap-80 : inexact-ok
 cbrt max xfail:ibm128-libgcc
 = cbrt downward binary32 0xf.fffffp+124 : 0x6.597fap+40 : xfail:ibm128-libgcc inexact-ok
 = cbrt tonearest binary32 0xf.fffffp+124 : 0x6.597fa8p+40 : xfail:ibm128-libgcc inexact-ok
diff --git a/math/auto-libm-test-out-cosh b/math/auto-libm-test-out-cosh
index 6039a35e41..b2de615a8e 100644
--- a/math/auto-libm-test-out-cosh
+++ b/math/auto-libm-test-out-cosh
@@ -3410,3 +3410,72 @@  cosh 0x5.8bfe6p+4
 = 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
+cosh 0x1.633c457f1e66bp+9
+= cosh downward binary32 0x2.c6788cp+8 : 0xf.fffffp+124 : inexact-ok overflow errno-erange-ok
+= cosh tonearest binary32 0x2.c6788cp+8 : plus_infty : inexact-ok overflow errno-erange
+= cosh towardzero binary32 0x2.c6788cp+8 : 0xf.fffffp+124 : inexact-ok overflow errno-erange-ok
+= cosh upward binary32 0x2.c6788cp+8 : plus_infty : inexact-ok overflow errno-erange
+= cosh downward binary64 0x2.c6788cp+8 : 0xf.ebad7efd1e06p+1020 : inexact-ok
+= cosh tonearest binary64 0x2.c6788cp+8 : 0xf.ebad7efd1e068p+1020 : inexact-ok
+= cosh towardzero binary64 0x2.c6788cp+8 : 0xf.ebad7efd1e06p+1020 : inexact-ok
+= cosh upward binary64 0x2.c6788cp+8 : 0xf.ebad7efd1e068p+1020 : inexact-ok
+= cosh downward intel96 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfp+1020 : inexact-ok
+= cosh tonearest intel96 0x2.c6788cp+8 : 0xf.ebad7efd1e065ep+1020 : inexact-ok
+= cosh towardzero intel96 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfp+1020 : inexact-ok
+= cosh upward intel96 0x2.c6788cp+8 : 0xf.ebad7efd1e065ep+1020 : inexact-ok
+= cosh downward m68k96 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfp+1020 : inexact-ok
+= cosh tonearest m68k96 0x2.c6788cp+8 : 0xf.ebad7efd1e065ep+1020 : inexact-ok
+= cosh towardzero m68k96 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfp+1020 : inexact-ok
+= cosh upward m68k96 0x2.c6788cp+8 : 0xf.ebad7efd1e065ep+1020 : inexact-ok
+= cosh downward binary128 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfa4889d66d8e48p+1020 : inexact-ok
+= cosh tonearest binary128 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfa4889d66d8e5p+1020 : inexact-ok
+= cosh towardzero binary128 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfa4889d66d8e48p+1020 : inexact-ok
+= cosh upward binary128 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfa4889d66d8e5p+1020 : inexact-ok
+= cosh downward ibm128 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfa4889d66d8cp+1020 : inexact-ok
+= cosh tonearest ibm128 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfa4889d66d9p+1020 : inexact-ok
+= cosh towardzero ibm128 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfa4889d66d8cp+1020 : inexact-ok
+= cosh upward ibm128 0x2.c6788cp+8 : 0xf.ebad7efd1e065dfa4889d66d9p+1020 : inexact-ok
+= cosh downward binary32 0x2.c67888p+8 : 0xf.fffffp+124 : inexact-ok overflow errno-erange-ok
+= cosh tonearest binary32 0x2.c67888p+8 : plus_infty : inexact-ok overflow errno-erange
+= cosh towardzero binary32 0x2.c67888p+8 : 0xf.fffffp+124 : inexact-ok overflow errno-erange-ok
+= cosh upward binary32 0x2.c67888p+8 : plus_infty : inexact-ok overflow errno-erange
+= cosh downward binary64 0x2.c67888p+8 : 0xf.eb6dd0c67ed4p+1020 : inexact-ok
+= cosh tonearest binary64 0x2.c67888p+8 : 0xf.eb6dd0c67ed4p+1020 : inexact-ok
+= cosh towardzero binary64 0x2.c67888p+8 : 0xf.eb6dd0c67ed4p+1020 : inexact-ok
+= cosh upward binary64 0x2.c67888p+8 : 0xf.eb6dd0c67ed48p+1020 : inexact-ok
+= cosh downward intel96 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8p+1020 : inexact-ok
+= cosh tonearest intel96 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c9p+1020 : inexact-ok
+= cosh towardzero intel96 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8p+1020 : inexact-ok
+= cosh upward intel96 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c9p+1020 : inexact-ok
+= cosh downward m68k96 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8p+1020 : inexact-ok
+= cosh tonearest m68k96 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c9p+1020 : inexact-ok
+= cosh towardzero m68k96 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8p+1020 : inexact-ok
+= cosh upward m68k96 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c9p+1020 : inexact-ok
+= cosh downward binary128 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8e47a528f28b58p+1020 : inexact-ok
+= cosh tonearest binary128 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8e47a528f28b6p+1020 : inexact-ok
+= cosh towardzero binary128 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8e47a528f28b58p+1020 : inexact-ok
+= cosh upward binary128 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8e47a528f28b6p+1020 : inexact-ok
+= cosh downward ibm128 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8e47a528f288p+1020 : inexact-ok
+= cosh tonearest ibm128 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8e47a528f28cp+1020 : inexact-ok
+= cosh towardzero ibm128 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8e47a528f288p+1020 : inexact-ok
+= cosh upward ibm128 0x2.c67888p+8 : 0xf.eb6dd0c67ed40c8e47a528f28cp+1020 : inexact-ok
+= cosh downward binary64 0x2.c6788afe3ccd6p+8 : 0xf.eb9d77485863p+1020 : inexact-ok
+= cosh tonearest binary64 0x2.c6788afe3ccd6p+8 : 0xf.eb9d774858638p+1020 : inexact-ok
+= cosh towardzero binary64 0x2.c6788afe3ccd6p+8 : 0xf.eb9d77485863p+1020 : inexact-ok
+= cosh upward binary64 0x2.c6788afe3ccd6p+8 : 0xf.eb9d774858638p+1020 : inexact-ok
+= cosh downward intel96 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cp+1020 : inexact-ok
+= cosh tonearest intel96 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375dp+1020 : inexact-ok
+= cosh towardzero intel96 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cp+1020 : inexact-ok
+= cosh upward intel96 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375dp+1020 : inexact-ok
+= cosh downward m68k96 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cp+1020 : inexact-ok
+= cosh tonearest m68k96 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375dp+1020 : inexact-ok
+= cosh towardzero m68k96 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cp+1020 : inexact-ok
+= cosh upward m68k96 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375dp+1020 : inexact-ok
+= cosh downward binary128 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cf28c2e4264d88p+1020 : inexact-ok
+= cosh tonearest binary128 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cf28c2e4264d88p+1020 : inexact-ok
+= cosh towardzero binary128 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cf28c2e4264d88p+1020 : inexact-ok
+= cosh upward binary128 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cf28c2e4264d9p+1020 : inexact-ok
+= cosh downward ibm128 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cf28c2e4264cp+1020 : inexact-ok
+= cosh tonearest ibm128 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cf28c2e4264cp+1020 : inexact-ok
+= cosh towardzero ibm128 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cf28c2e4264cp+1020 : inexact-ok
+= cosh upward ibm128 0x2.c6788afe3ccd6p+8 : 0xf.eb9d7748586375cf28c2e4265p+1020 : inexact-ok
diff --git a/math/auto-libm-test-out-erfc b/math/auto-libm-test-out-erfc
index 6a921febcb..60ac9ed740 100644
--- a/math/auto-libm-test-out-erfc
+++ b/math/auto-libm-test-out-erfc
@@ -4198,3 +4198,72 @@  erfc 0x1.e33c9ep+0
 = erfc tonearest ibm128 0x1.e33c9ep+0 : 0x1.f1cb04b622e6f4d5035449633b8p-8 : inexact-ok
 = erfc towardzero ibm128 0x1.e33c9ep+0 : 0x1.f1cb04b622e6f4d5035449633bp-8 : inexact-ok
 = erfc upward ibm128 0x1.e33c9ep+0 : 0x1.f1cb04b622e6f4d5035449633b8p-8 : inexact-ok
+erfc 0x1.3ffcbf39febb4p+0
+= erfc downward binary32 0x1.3ffccp+0 : 0x1.3bd95ep-4 : inexact-ok
+= erfc tonearest binary32 0x1.3ffccp+0 : 0x1.3bd96p-4 : inexact-ok
+= erfc towardzero binary32 0x1.3ffccp+0 : 0x1.3bd95ep-4 : inexact-ok
+= erfc upward binary32 0x1.3ffccp+0 : 0x1.3bd96p-4 : inexact-ok
+= erfc downward binary64 0x1.3ffccp+0 : 0x1.3bd95ffe4e556p-4 : inexact-ok
+= erfc tonearest binary64 0x1.3ffccp+0 : 0x1.3bd95ffe4e556p-4 : inexact-ok
+= erfc towardzero binary64 0x1.3ffccp+0 : 0x1.3bd95ffe4e556p-4 : inexact-ok
+= erfc upward binary64 0x1.3ffccp+0 : 0x1.3bd95ffe4e557p-4 : inexact-ok
+= erfc downward intel96 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c4p-4 : inexact-ok
+= erfc tonearest intel96 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c6p-4 : inexact-ok
+= erfc towardzero intel96 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c4p-4 : inexact-ok
+= erfc upward intel96 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c6p-4 : inexact-ok
+= erfc downward m68k96 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c4p-4 : inexact-ok
+= erfc tonearest m68k96 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c6p-4 : inexact-ok
+= erfc towardzero m68k96 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c4p-4 : inexact-ok
+= erfc upward m68k96 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c6p-4 : inexact-ok
+= erfc downward binary128 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c5991cb64b6573p-4 : inexact-ok
+= erfc tonearest binary128 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c5991cb64b6573p-4 : inexact-ok
+= erfc towardzero binary128 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c5991cb64b6573p-4 : inexact-ok
+= erfc upward binary128 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c5991cb64b6574p-4 : inexact-ok
+= erfc downward ibm128 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c5991cb64b65p-4 : inexact-ok
+= erfc tonearest ibm128 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c5991cb64b658p-4 : inexact-ok
+= erfc towardzero ibm128 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c5991cb64b65p-4 : inexact-ok
+= erfc upward ibm128 0x1.3ffccp+0 : 0x1.3bd95ffe4e5561c5991cb64b658p-4 : inexact-ok
+= erfc downward binary32 0x1.3ffcbep+0 : 0x1.3bd966p-4 : inexact-ok
+= erfc tonearest binary32 0x1.3ffcbep+0 : 0x1.3bd968p-4 : inexact-ok
+= erfc towardzero binary32 0x1.3ffcbep+0 : 0x1.3bd966p-4 : inexact-ok
+= erfc upward binary32 0x1.3ffcbep+0 : 0x1.3bd968p-4 : inexact-ok
+= erfc downward binary64 0x1.3ffcbep+0 : 0x1.3bd9679020a68p-4 : inexact-ok
+= erfc tonearest binary64 0x1.3ffcbep+0 : 0x1.3bd9679020a68p-4 : inexact-ok
+= erfc towardzero binary64 0x1.3ffcbep+0 : 0x1.3bd9679020a68p-4 : inexact-ok
+= erfc upward binary64 0x1.3ffcbep+0 : 0x1.3bd9679020a69p-4 : inexact-ok
+= erfc downward intel96 0x1.3ffcbep+0 : 0x1.3bd9679020a687bep-4 : inexact-ok
+= erfc tonearest intel96 0x1.3ffcbep+0 : 0x1.3bd9679020a687cp-4 : inexact-ok
+= erfc towardzero intel96 0x1.3ffcbep+0 : 0x1.3bd9679020a687bep-4 : inexact-ok
+= erfc upward intel96 0x1.3ffcbep+0 : 0x1.3bd9679020a687cp-4 : inexact-ok
+= erfc downward m68k96 0x1.3ffcbep+0 : 0x1.3bd9679020a687bep-4 : inexact-ok
+= erfc tonearest m68k96 0x1.3ffcbep+0 : 0x1.3bd9679020a687cp-4 : inexact-ok
+= erfc towardzero m68k96 0x1.3ffcbep+0 : 0x1.3bd9679020a687bep-4 : inexact-ok
+= erfc upward m68k96 0x1.3ffcbep+0 : 0x1.3bd9679020a687cp-4 : inexact-ok
+= erfc downward binary128 0x1.3ffcbep+0 : 0x1.3bd9679020a687bf0ac713ffaf7ap-4 : inexact-ok
+= erfc tonearest binary128 0x1.3ffcbep+0 : 0x1.3bd9679020a687bf0ac713ffaf7bp-4 : inexact-ok
+= erfc towardzero binary128 0x1.3ffcbep+0 : 0x1.3bd9679020a687bf0ac713ffaf7ap-4 : inexact-ok
+= erfc upward binary128 0x1.3ffcbep+0 : 0x1.3bd9679020a687bf0ac713ffaf7bp-4 : inexact-ok
+= erfc downward ibm128 0x1.3ffcbep+0 : 0x1.3bd9679020a687bf0ac713ffafp-4 : inexact-ok
+= erfc tonearest ibm128 0x1.3ffcbep+0 : 0x1.3bd9679020a687bf0ac713ffaf8p-4 : inexact-ok
+= erfc towardzero ibm128 0x1.3ffcbep+0 : 0x1.3bd9679020a687bf0ac713ffafp-4 : inexact-ok
+= erfc upward ibm128 0x1.3ffcbep+0 : 0x1.3bd9679020a687bf0ac713ffaf8p-4 : inexact-ok
+= erfc downward binary64 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb7736p-4 : inexact-ok
+= erfc tonearest binary64 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb7736p-4 : inexact-ok
+= erfc towardzero binary64 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb7736p-4 : inexact-ok
+= erfc upward binary64 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb7737p-4 : inexact-ok
+= erfc downward intel96 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644ap-4 : inexact-ok
+= erfc tonearest intel96 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644cp-4 : inexact-ok
+= erfc towardzero intel96 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644ap-4 : inexact-ok
+= erfc upward intel96 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644cp-4 : inexact-ok
+= erfc downward m68k96 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644ap-4 : inexact-ok
+= erfc tonearest m68k96 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644cp-4 : inexact-ok
+= erfc towardzero m68k96 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644ap-4 : inexact-ok
+= erfc upward m68k96 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644cp-4 : inexact-ok
+= erfc downward binary128 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644beafd5d55b35fp-4 : inexact-ok
+= erfc tonearest binary128 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644beafd5d55b35fp-4 : inexact-ok
+= erfc towardzero binary128 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644beafd5d55b35fp-4 : inexact-ok
+= erfc upward binary128 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644beafd5d55b36p-4 : inexact-ok
+= erfc downward ibm128 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644beafd5d55b3p-4 : inexact-ok
+= erfc tonearest ibm128 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644beafd5d55b38p-4 : inexact-ok
+= erfc towardzero ibm128 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644beafd5d55b3p-4 : inexact-ok
+= erfc upward ibm128 0x1.3ffcbf39febb4p+0 : 0x1.3bd962ebb773644beafd5d55b38p-4 : inexact-ok
diff --git a/math/auto-libm-test-out-exp b/math/auto-libm-test-out-exp
index 38d2c52ac7..a8b87a782f 100644
--- a/math/auto-libm-test-out-exp
+++ b/math/auto-libm-test-out-exp
@@ -4869,3 +4869,72 @@  exp 0x1.fefe02p-16
 = 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
+exp -0x1.0c4af1ad4ee36p+9
+= exp downward binary32 -0x2.1895ep+8 : 0x0p+0 : inexact-ok underflow errno-erange
+= exp tonearest binary32 -0x2.1895ep+8 : 0x0p+0 : inexact-ok underflow errno-erange
+= exp towardzero binary32 -0x2.1895ep+8 : 0x0p+0 : inexact-ok underflow errno-erange
+= exp upward binary32 -0x2.1895ep+8 : 0x8p-152 : inexact-ok underflow errno-erange-ok
+= exp downward binary64 -0x2.1895ep+8 : 0x3.a84ddaee8cc54p-776 : inexact-ok
+= exp tonearest binary64 -0x2.1895ep+8 : 0x3.a84ddaee8cc56p-776 : inexact-ok
+= exp towardzero binary64 -0x2.1895ep+8 : 0x3.a84ddaee8cc54p-776 : inexact-ok
+= exp upward binary64 -0x2.1895ep+8 : 0x3.a84ddaee8cc56p-776 : inexact-ok
+= exp downward intel96 -0x2.1895ep+8 : 0x3.a84ddaee8cc55658p-776 : inexact-ok
+= exp tonearest intel96 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565cp-776 : inexact-ok
+= exp towardzero intel96 -0x2.1895ep+8 : 0x3.a84ddaee8cc55658p-776 : inexact-ok
+= exp upward intel96 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565cp-776 : inexact-ok
+= exp downward m68k96 -0x2.1895ep+8 : 0x3.a84ddaee8cc55658p-776 : inexact-ok
+= exp tonearest m68k96 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565cp-776 : inexact-ok
+= exp towardzero m68k96 -0x2.1895ep+8 : 0x3.a84ddaee8cc55658p-776 : inexact-ok
+= exp upward m68k96 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565cp-776 : inexact-ok
+= exp downward binary128 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565aff6debc74164p-776 : inexact-ok
+= exp tonearest binary128 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565aff6debc74164p-776 : inexact-ok
+= exp towardzero binary128 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565aff6debc74164p-776 : inexact-ok
+= exp upward binary128 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565aff6debc74166p-776 : inexact-ok
+= exp downward ibm128 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565aff6debc741p-776 : inexact-ok
+= exp tonearest ibm128 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565aff6debc741p-776 : inexact-ok
+= exp towardzero ibm128 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565aff6debc741p-776 : inexact-ok
+= exp upward ibm128 -0x2.1895ep+8 : 0x3.a84ddaee8cc5565aff6debc742p-776 : inexact-ok
+= exp downward binary32 -0x2.1895e4p+8 : 0x0p+0 : inexact-ok underflow errno-erange
+= exp tonearest binary32 -0x2.1895e4p+8 : 0x0p+0 : inexact-ok underflow errno-erange
+= exp towardzero binary32 -0x2.1895e4p+8 : 0x0p+0 : inexact-ok underflow errno-erange
+= exp upward binary32 -0x2.1895e4p+8 : 0x8p-152 : inexact-ok underflow errno-erange-ok
+= exp downward binary64 -0x2.1895e4p+8 : 0x3.a83f39d46352ep-776 : inexact-ok
+= exp tonearest binary64 -0x2.1895e4p+8 : 0x3.a83f39d46353p-776 : inexact-ok
+= exp towardzero binary64 -0x2.1895e4p+8 : 0x3.a83f39d46352ep-776 : inexact-ok
+= exp upward binary64 -0x2.1895e4p+8 : 0x3.a83f39d46353p-776 : inexact-ok
+= exp downward intel96 -0x2.1895e4p+8 : 0x3.a83f39d46352f7ap-776 : inexact-ok
+= exp tonearest intel96 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a4p-776 : inexact-ok
+= exp towardzero intel96 -0x2.1895e4p+8 : 0x3.a83f39d46352f7ap-776 : inexact-ok
+= exp upward intel96 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a4p-776 : inexact-ok
+= exp downward m68k96 -0x2.1895e4p+8 : 0x3.a83f39d46352f7ap-776 : inexact-ok
+= exp tonearest m68k96 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a4p-776 : inexact-ok
+= exp towardzero m68k96 -0x2.1895e4p+8 : 0x3.a83f39d46352f7ap-776 : inexact-ok
+= exp upward m68k96 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a4p-776 : inexact-ok
+= exp downward binary128 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a29ab0ace8657ap-776 : inexact-ok
+= exp tonearest binary128 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a29ab0ace8657ap-776 : inexact-ok
+= exp towardzero binary128 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a29ab0ace8657ap-776 : inexact-ok
+= exp upward binary128 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a29ab0ace8657cp-776 : inexact-ok
+= exp downward ibm128 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a29ab0ace865p-776 : inexact-ok
+= exp tonearest ibm128 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a29ab0ace865p-776 : inexact-ok
+= exp towardzero ibm128 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a29ab0ace865p-776 : inexact-ok
+= exp upward ibm128 -0x2.1895e4p+8 : 0x3.a83f39d46352f7a29ab0ace866p-776 : inexact-ok
+= exp downward binary64 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cep-776 : inexact-ok
+= exp tonearest binary64 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cep-776 : inexact-ok
+= exp towardzero binary64 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cep-776 : inexact-ok
+= exp upward binary64 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208dp-776 : inexact-ok
+= exp downward intel96 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefbp-776 : inexact-ok
+= exp tonearest intel96 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb4p-776 : inexact-ok
+= exp towardzero intel96 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefbp-776 : inexact-ok
+= exp upward intel96 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb4p-776 : inexact-ok
+= exp downward m68k96 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefbp-776 : inexact-ok
+= exp tonearest m68k96 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb4p-776 : inexact-ok
+= exp towardzero m68k96 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefbp-776 : inexact-ok
+= exp upward m68k96 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb4p-776 : inexact-ok
+= exp downward binary128 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb3b0c82f6b5b36p-776 : inexact-ok
+= exp tonearest binary128 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb3b0c82f6b5b38p-776 : inexact-ok
+= exp towardzero binary128 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb3b0c82f6b5b36p-776 : inexact-ok
+= exp upward binary128 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb3b0c82f6b5b38p-776 : inexact-ok
+= exp downward ibm128 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb3b0c82f6b5bp-776 : inexact-ok
+= exp tonearest ibm128 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb3b0c82f6b5bp-776 : inexact-ok
+= exp towardzero ibm128 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb3b0c82f6b5bp-776 : inexact-ok
+= exp upward ibm128 -0x2.1895e35a9dc6cp+8 : 0x3.a84196ad208cefb3b0c82f6b5cp-776 : inexact-ok
diff --git a/math/auto-libm-test-out-log b/math/auto-libm-test-out-log
index 5c6865404f..8693c4b22a 100644
--- a/math/auto-libm-test-out-log
+++ b/math/auto-libm-test-out-log
@@ -1573,3 +1573,72 @@  log 0x1.770072p+0
 = log tonearest ibm128 0x1.770072p+0 : 0x6.1ba943bb20434dc4abd932bca6p-4 : inexact-ok
 = log towardzero ibm128 0x1.770072p+0 : 0x6.1ba943bb20434dc4abd932bca6p-4 : inexact-ok
 = log upward ibm128 0x1.770072p+0 : 0x6.1ba943bb20434dc4abd932bca8p-4 : inexact-ok
+log 0x1.d405118796bd8p-1
+= log downward binary32 0xe.a0289p-4 : -0x1.6fe0d2p-4 : inexact-ok
+= log tonearest binary32 0xe.a0289p-4 : -0x1.6fe0dp-4 : inexact-ok
+= log towardzero binary32 0xe.a0289p-4 : -0x1.6fe0dp-4 : inexact-ok
+= log upward binary32 0xe.a0289p-4 : -0x1.6fe0dp-4 : inexact-ok
+= log downward binary64 0xe.a0289p-4 : -0x1.6fe0d0a6311e4p-4 : inexact-ok
+= log tonearest binary64 0xe.a0289p-4 : -0x1.6fe0d0a6311e3p-4 : inexact-ok
+= log towardzero binary64 0xe.a0289p-4 : -0x1.6fe0d0a6311e3p-4 : inexact-ok
+= log upward binary64 0xe.a0289p-4 : -0x1.6fe0d0a6311e3p-4 : inexact-ok
+= log downward intel96 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f2p-4 : inexact-ok
+= log tonearest intel96 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f2p-4 : inexact-ok
+= log towardzero intel96 0xe.a0289p-4 : -0x1.6fe0d0a6311e31fp-4 : inexact-ok
+= log upward intel96 0xe.a0289p-4 : -0x1.6fe0d0a6311e31fp-4 : inexact-ok
+= log downward m68k96 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f2p-4 : inexact-ok
+= log tonearest m68k96 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f2p-4 : inexact-ok
+= log towardzero m68k96 0xe.a0289p-4 : -0x1.6fe0d0a6311e31fp-4 : inexact-ok
+= log upward m68k96 0xe.a0289p-4 : -0x1.6fe0d0a6311e31fp-4 : inexact-ok
+= log downward binary128 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f19855212ae415p-4 : inexact-ok
+= log tonearest binary128 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f19855212ae415p-4 : inexact-ok
+= log towardzero binary128 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f19855212ae414p-4 : inexact-ok
+= log upward binary128 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f19855212ae414p-4 : inexact-ok
+= log downward ibm128 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f19855212ae48p-4 : inexact-ok
+= log tonearest ibm128 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f19855212ae4p-4 : inexact-ok
+= log towardzero ibm128 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f19855212ae4p-4 : inexact-ok
+= log upward ibm128 0xe.a0289p-4 : -0x1.6fe0d0a6311e31f19855212ae4p-4 : inexact-ok
+= log downward binary32 0xe.a0288p-4 : -0x1.6fe0e4p-4 : inexact-ok
+= log tonearest binary32 0xe.a0288p-4 : -0x1.6fe0e2p-4 : inexact-ok
+= log towardzero binary32 0xe.a0288p-4 : -0x1.6fe0e2p-4 : inexact-ok
+= log upward binary32 0xe.a0288p-4 : -0x1.6fe0e2p-4 : inexact-ok
+= log downward binary64 0xe.a0288p-4 : -0x1.6fe0e22718ad8p-4 : inexact-ok
+= log tonearest binary64 0xe.a0288p-4 : -0x1.6fe0e22718ad7p-4 : inexact-ok
+= log towardzero binary64 0xe.a0288p-4 : -0x1.6fe0e22718ad7p-4 : inexact-ok
+= log upward binary64 0xe.a0288p-4 : -0x1.6fe0e22718ad7p-4 : inexact-ok
+= log downward intel96 0xe.a0288p-4 : -0x1.6fe0e22718ad7752p-4 : inexact-ok
+= log tonearest intel96 0xe.a0288p-4 : -0x1.6fe0e22718ad7752p-4 : inexact-ok
+= log towardzero intel96 0xe.a0288p-4 : -0x1.6fe0e22718ad775p-4 : inexact-ok
+= log upward intel96 0xe.a0288p-4 : -0x1.6fe0e22718ad775p-4 : inexact-ok
+= log downward m68k96 0xe.a0288p-4 : -0x1.6fe0e22718ad7752p-4 : inexact-ok
+= log tonearest m68k96 0xe.a0288p-4 : -0x1.6fe0e22718ad7752p-4 : inexact-ok
+= log towardzero m68k96 0xe.a0288p-4 : -0x1.6fe0e22718ad775p-4 : inexact-ok
+= log upward m68k96 0xe.a0288p-4 : -0x1.6fe0e22718ad775p-4 : inexact-ok
+= log downward binary128 0xe.a0288p-4 : -0x1.6fe0e22718ad77516665df92f5dbp-4 : inexact-ok
+= log tonearest binary128 0xe.a0288p-4 : -0x1.6fe0e22718ad77516665df92f5dbp-4 : inexact-ok
+= log towardzero binary128 0xe.a0288p-4 : -0x1.6fe0e22718ad77516665df92f5dap-4 : inexact-ok
+= log upward binary128 0xe.a0288p-4 : -0x1.6fe0e22718ad77516665df92f5dap-4 : inexact-ok
+= log downward ibm128 0xe.a0288p-4 : -0x1.6fe0e22718ad77516665df92f6p-4 : inexact-ok
+= log tonearest ibm128 0xe.a0288p-4 : -0x1.6fe0e22718ad77516665df92f6p-4 : inexact-ok
+= log towardzero ibm128 0xe.a0288p-4 : -0x1.6fe0e22718ad77516665df92f58p-4 : inexact-ok
+= log upward ibm128 0xe.a0288p-4 : -0x1.6fe0e22718ad77516665df92f58p-4 : inexact-ok
+= log downward binary64 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c400979p-4 : inexact-ok
+= log tonearest binary64 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c400979p-4 : inexact-ok
+= log towardzero binary64 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c400978p-4 : inexact-ok
+= log upward binary64 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c400978p-4 : inexact-ok
+= log downward intel96 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884ep-4 : inexact-ok
+= log tonearest intel96 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884ep-4 : inexact-ok
+= log towardzero intel96 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884cp-4 : inexact-ok
+= log upward intel96 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884cp-4 : inexact-ok
+= log downward m68k96 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884ep-4 : inexact-ok
+= log tonearest m68k96 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884ep-4 : inexact-ok
+= log towardzero m68k96 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884cp-4 : inexact-ok
+= log upward m68k96 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884cp-4 : inexact-ok
+= log downward binary128 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884d86068c297d0cp-4 : inexact-ok
+= log tonearest binary128 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884d86068c297d0cp-4 : inexact-ok
+= log towardzero binary128 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884d86068c297d0bp-4 : inexact-ok
+= log upward binary128 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884d86068c297d0bp-4 : inexact-ok
+= log downward ibm128 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884d86068c297d8p-4 : inexact-ok
+= log tonearest ibm128 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884d86068c297dp-4 : inexact-ok
+= log towardzero ibm128 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884d86068c297dp-4 : inexact-ok
+= log upward ibm128 0xe.a0288c3cb5ecp-4 : -0x1.6fe0d4c40097884d86068c297dp-4 : inexact-ok
diff --git a/math/auto-libm-test-out-sinh b/math/auto-libm-test-out-sinh
index e78b02b360..c26a34c1c5 100644
--- a/math/auto-libm-test-out-sinh
+++ b/math/auto-libm-test-out-sinh
@@ -3507,3 +3507,72 @@  sinh 0x2.c5d37700c6bb03a6c24b6c9b494ep+12
 = sinh tonearest ibm128 0x2.c5d37700c6bb03a6c24b6c9b49p+12 : plus_infty : inexact-ok overflow errno-erange
 = sinh towardzero ibm128 0x2.c5d37700c6bb03a6c24b6c9b49p+12 : 0xf.ffffffffffffbffffffffffffcp+1020 : xfail:ibm128-libgcc inexact-ok overflow errno-erange-ok
 = sinh upward ibm128 0x2.c5d37700c6bb03a6c24b6c9b49p+12 : plus_infty : xfail:ibm128-libgcc inexact-ok overflow errno-erange
+sinh -0x1.633c62890fa14p+9
+= sinh downward binary32 -0x2.c678c4p+8 : minus_infty : inexact-ok overflow errno-erange
+= sinh tonearest binary32 -0x2.c678c4p+8 : minus_infty : inexact-ok overflow errno-erange
+= sinh towardzero binary32 -0x2.c678c4p+8 : -0xf.fffffp+124 : inexact-ok overflow errno-erange-ok
+= sinh upward binary32 -0x2.c678c4p+8 : -0xf.fffffp+124 : inexact-ok overflow errno-erange-ok
+= sinh downward binary64 -0x2.c678c4p+8 : -0xf.ef296e7b88b48p+1020 : inexact-ok
+= sinh tonearest binary64 -0x2.c678c4p+8 : -0xf.ef296e7b88b4p+1020 : inexact-ok
+= sinh towardzero binary64 -0x2.c678c4p+8 : -0xf.ef296e7b88b4p+1020 : inexact-ok
+= sinh upward binary64 -0x2.c678c4p+8 : -0xf.ef296e7b88b4p+1020 : inexact-ok
+= sinh downward intel96 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f7p+1020 : inexact-ok
+= sinh tonearest intel96 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f6p+1020 : inexact-ok
+= sinh towardzero intel96 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f6p+1020 : inexact-ok
+= sinh upward intel96 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f6p+1020 : inexact-ok
+= sinh downward m68k96 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f7p+1020 : inexact-ok
+= sinh tonearest m68k96 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f6p+1020 : inexact-ok
+= sinh towardzero m68k96 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f6p+1020 : inexact-ok
+= sinh upward m68k96 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f6p+1020 : inexact-ok
+= sinh downward binary128 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f625301a966ffa8p+1020 : inexact-ok
+= sinh tonearest binary128 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f625301a966ffap+1020 : inexact-ok
+= sinh towardzero binary128 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f625301a966ffap+1020 : inexact-ok
+= sinh upward binary128 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f625301a966ffap+1020 : inexact-ok
+= sinh downward ibm128 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f625301a967p+1020 : inexact-ok
+= sinh tonearest ibm128 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f625301a967p+1020 : inexact-ok
+= sinh towardzero ibm128 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f625301a966fcp+1020 : inexact-ok
+= sinh upward ibm128 -0x2.c678c4p+8 : -0xf.ef296e7b88b41f625301a966fcp+1020 : inexact-ok
+= sinh downward binary32 -0x2.c678c8p+8 : minus_infty : inexact-ok overflow errno-erange
+= sinh tonearest binary32 -0x2.c678c8p+8 : minus_infty : inexact-ok overflow errno-erange
+= sinh towardzero binary32 -0x2.c678c8p+8 : -0xf.fffffp+124 : inexact-ok overflow errno-erange-ok
+= sinh upward binary32 -0x2.c678c8p+8 : -0xf.fffffp+124 : inexact-ok overflow errno-erange-ok
+= sinh downward binary64 -0x2.c678c8p+8 : -0xf.ef692ba0bc98p+1020 : inexact-ok
+= sinh tonearest binary64 -0x2.c678c8p+8 : -0xf.ef692ba0bc978p+1020 : inexact-ok
+= sinh towardzero binary64 -0x2.c678c8p+8 : -0xf.ef692ba0bc978p+1020 : inexact-ok
+= sinh upward binary64 -0x2.c678c8p+8 : -0xf.ef692ba0bc978p+1020 : inexact-ok
+= sinh downward intel96 -0x2.c678c8p+8 : -0xf.ef692ba0bc97addp+1020 : inexact-ok
+= sinh tonearest intel96 -0x2.c678c8p+8 : -0xf.ef692ba0bc97addp+1020 : inexact-ok
+= sinh towardzero intel96 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adcp+1020 : inexact-ok
+= sinh upward intel96 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adcp+1020 : inexact-ok
+= sinh downward m68k96 -0x2.c678c8p+8 : -0xf.ef692ba0bc97addp+1020 : inexact-ok
+= sinh tonearest m68k96 -0x2.c678c8p+8 : -0xf.ef692ba0bc97addp+1020 : inexact-ok
+= sinh towardzero m68k96 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adcp+1020 : inexact-ok
+= sinh upward m68k96 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adcp+1020 : inexact-ok
+= sinh downward binary128 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adc852e8e105932p+1020 : inexact-ok
+= sinh tonearest binary128 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adc852e8e105932p+1020 : inexact-ok
+= sinh towardzero binary128 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adc852e8e1059318p+1020 : inexact-ok
+= sinh upward binary128 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adc852e8e1059318p+1020 : inexact-ok
+= sinh downward ibm128 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adc852e8e10594p+1020 : inexact-ok
+= sinh tonearest ibm128 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adc852e8e10594p+1020 : inexact-ok
+= sinh towardzero ibm128 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adc852e8e1059p+1020 : inexact-ok
+= sinh upward ibm128 -0x2.c678c8p+8 : -0xf.ef692ba0bc97adc852e8e1059p+1020 : inexact-ok
+= sinh downward binary64 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c8p+1020 : inexact-ok
+= sinh tonearest binary64 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c8p+1020 : inexact-ok
+= sinh towardzero binary64 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2cp+1020 : inexact-ok
+= sinh upward binary64 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2cp+1020 : inexact-ok
+= sinh downward intel96 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75bp+1020 : inexact-ok
+= sinh tonearest intel96 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75ap+1020 : inexact-ok
+= sinh towardzero intel96 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75ap+1020 : inexact-ok
+= sinh upward intel96 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75ap+1020 : inexact-ok
+= sinh downward m68k96 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75bp+1020 : inexact-ok
+= sinh tonearest m68k96 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75ap+1020 : inexact-ok
+= sinh towardzero m68k96 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75ap+1020 : inexact-ok
+= sinh upward m68k96 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75ap+1020 : inexact-ok
+= sinh downward binary128 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75a66ea3ca1c4178p+1020 : inexact-ok
+= sinh tonearest binary128 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75a66ea3ca1c417p+1020 : inexact-ok
+= sinh towardzero binary128 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75a66ea3ca1c417p+1020 : inexact-ok
+= sinh upward binary128 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75a66ea3ca1c417p+1020 : inexact-ok
+= sinh downward ibm128 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75a66ea3ca1c44p+1020 : inexact-ok
+= sinh tonearest ibm128 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75a66ea3ca1c4p+1020 : inexact-ok
+= sinh towardzero ibm128 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75a66ea3ca1c4p+1020 : inexact-ok
+= sinh upward ibm128 -0x2.c678c5121f428p+8 : -0xf.ef3a7e711d2c75a66ea3ca1c4p+1020 : inexact-ok
diff --git a/math/auto-libm-test-out-tgamma b/math/auto-libm-test-out-tgamma
index a3f4f8efbe..032ad3a7d7 100644
--- a/math/auto-libm-test-out-tgamma
+++ b/math/auto-libm-test-out-tgamma
@@ -27328,3 +27328,72 @@  tgamma -0x3.0aa534p+0
 = 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
+tgamma -0x1.62b8c36c7180bp+4
+= tgamma downward binary32 -0x1.62b8c2p+4 : -0xf.3fc2bp-72 : inexact-ok
+= tgamma tonearest binary32 -0x1.62b8c2p+4 : -0xf.3fc2bp-72 : inexact-ok
+= tgamma towardzero binary32 -0x1.62b8c2p+4 : -0xf.3fc2ap-72 : inexact-ok
+= tgamma upward binary32 -0x1.62b8c2p+4 : -0xf.3fc2ap-72 : inexact-ok
+= tgamma downward binary64 -0x1.62b8c2p+4 : -0xf.3fc2acf5d8ap-72 : inexact-ok
+= tgamma tonearest binary64 -0x1.62b8c2p+4 : -0xf.3fc2acf5d8ap-72 : inexact-ok
+= tgamma towardzero binary64 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89f8p-72 : inexact-ok
+= tgamma upward binary64 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89f8p-72 : inexact-ok
+= tgamma downward intel96 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd7ap-72 : inexact-ok
+= tgamma tonearest intel96 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd7ap-72 : inexact-ok
+= tgamma towardzero intel96 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd79p-72 : inexact-ok
+= tgamma upward intel96 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd79p-72 : inexact-ok
+= tgamma downward m68k96 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd7ap-72 : inexact-ok
+= tgamma tonearest m68k96 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd7ap-72 : inexact-ok
+= tgamma towardzero m68k96 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd79p-72 : inexact-ok
+= tgamma upward m68k96 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd79p-72 : inexact-ok
+= tgamma downward binary128 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd798f96647a0a238p-72 : inexact-ok
+= tgamma tonearest binary128 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd798f96647a0a238p-72 : inexact-ok
+= tgamma towardzero binary128 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd798f96647a0a23p-72 : inexact-ok
+= tgamma upward binary128 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd798f96647a0a23p-72 : inexact-ok
+= tgamma downward ibm128 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd798f96647a0a4p-72 : inexact-ok
+= tgamma tonearest ibm128 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd798f96647a0a4p-72 : inexact-ok
+= tgamma towardzero ibm128 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd798f96647a0ap-72 : inexact-ok
+= tgamma upward ibm128 -0x1.62b8c2p+4 : -0xf.3fc2acf5d89fd798f96647a0ap-72 : inexact-ok
+= tgamma downward binary32 -0x1.62b8c4p+4 : -0xf.3fb2ap-72 : inexact-ok
+= tgamma tonearest binary32 -0x1.62b8c4p+4 : -0xf.3fb2ap-72 : inexact-ok
+= tgamma towardzero binary32 -0x1.62b8c4p+4 : -0xf.3fb29p-72 : inexact-ok
+= tgamma upward binary32 -0x1.62b8c4p+4 : -0xf.3fb29p-72 : inexact-ok
+= tgamma downward binary64 -0x1.62b8c4p+4 : -0xf.3fb29bd00da8p-72 : inexact-ok
+= tgamma tonearest binary64 -0x1.62b8c4p+4 : -0xf.3fb29bd00da8p-72 : inexact-ok
+= tgamma towardzero binary64 -0x1.62b8c4p+4 : -0xf.3fb29bd00da78p-72 : inexact-ok
+= tgamma upward binary64 -0x1.62b8c4p+4 : -0xf.3fb29bd00da78p-72 : inexact-ok
+= tgamma downward intel96 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e59p-72 : inexact-ok
+= tgamma tonearest intel96 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e58p-72 : inexact-ok
+= tgamma towardzero intel96 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e58p-72 : inexact-ok
+= tgamma upward intel96 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e58p-72 : inexact-ok
+= tgamma downward m68k96 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e59p-72 : inexact-ok
+= tgamma tonearest m68k96 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e58p-72 : inexact-ok
+= tgamma towardzero m68k96 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e58p-72 : inexact-ok
+= tgamma upward m68k96 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e58p-72 : inexact-ok
+= tgamma downward binary128 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e586371692562ebp-72 : inexact-ok
+= tgamma tonearest binary128 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e586371692562ebp-72 : inexact-ok
+= tgamma towardzero binary128 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e586371692562ea8p-72 : inexact-ok
+= tgamma upward binary128 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e586371692562ea8p-72 : inexact-ok
+= tgamma downward ibm128 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e586371692563p-72 : inexact-ok
+= tgamma tonearest ibm128 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e586371692563p-72 : inexact-ok
+= tgamma towardzero ibm128 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e586371692562cp-72 : inexact-ok
+= tgamma upward ibm128 -0x1.62b8c4p+4 : -0xf.3fb29bd00da7e586371692562cp-72 : inexact-ok
+= tgamma downward binary64 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6bp-72 : inexact-ok
+= tgamma tonearest binary64 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a8p-72 : inexact-ok
+= tgamma towardzero binary64 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a8p-72 : inexact-ok
+= tgamma upward binary64 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a8p-72 : inexact-ok
+= tgamma downward intel96 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a802p-72 : inexact-ok
+= tgamma tonearest intel96 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a802p-72 : inexact-ok
+= tgamma towardzero intel96 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801p-72 : inexact-ok
+= tgamma upward intel96 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801p-72 : inexact-ok
+= tgamma downward m68k96 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a802p-72 : inexact-ok
+= tgamma tonearest m68k96 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a802p-72 : inexact-ok
+= tgamma towardzero m68k96 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801p-72 : inexact-ok
+= tgamma upward m68k96 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801p-72 : inexact-ok
+= tgamma downward binary128 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801abb3039b10308p-72 : inexact-ok
+= tgamma tonearest binary128 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801abb3039b10308p-72 : inexact-ok
+= tgamma towardzero binary128 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801abb3039b103p-72 : inexact-ok
+= tgamma upward binary128 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801abb3039b103p-72 : inexact-ok
+= tgamma downward ibm128 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801abb3039b104p-72 : inexact-ok
+= tgamma tonearest ibm128 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801abb3039b104p-72 : inexact-ok
+= tgamma towardzero ibm128 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801abb3039b1p-72 : inexact-ok
+= tgamma upward ibm128 -0x1.62b8c36c7180bp+4 : -0xf.3fb73d327d6a801abb3039b1p-72 : inexact-ok
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index 57b90375a3..633d2ab8e4 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -72,7 +72,7 @@  float128: 2
 ldouble: 1
 
 Function: "asinh":
-double: 1
+double: 2
 float: 2
 float128: 3
 ldouble: 3
@@ -497,7 +497,7 @@  float128: 2
 ldouble: 1
 
 Function: "cbrt":
-double: 3
+double: 4
 float: 1
 float128: 1
 ldouble: 1
@@ -804,19 +804,19 @@  Function: "cos_vlen8_avx2":
 float: 1
 
 Function: "cosh":
-double: 1
+double: 2
 float: 2
 float128: 1
 ldouble: 2
 
 Function: "cosh_downward":
-double: 2
+double: 3
 float: 1
 float128: 2
 ldouble: 3
 
 Function: "cosh_towardzero":
-double: 2
+double: 3
 float: 1
 float128: 2
 ldouble: 2
@@ -1135,7 +1135,7 @@  float128: 2
 ldouble: 1
 
 Function: "erfc":
-double: 3
+double: 5
 float: 3
 float128: 2
 ldouble: 3
@@ -1159,6 +1159,7 @@  float128: 5
 ldouble: 5
 
 Function: "exp":
+double: 1
 float: 1
 float128: 1
 ldouble: 1
@@ -1407,6 +1408,7 @@  float128: 8
 ldouble: 6
 
 Function: "log":
+double: 1
 float: 1
 float128: 1
 ldouble: 1
@@ -1663,7 +1665,7 @@  float128: 3
 ldouble: 5
 
 Function: "sinh_towardzero":
-double: 2
+double: 3
 float: 2
 float128: 3
 ldouble: 4
@@ -1722,25 +1724,25 @@  float128: 3
 ldouble: 4
 
 Function: "tgamma":
-double: 5
+double: 9
 float: 8
 float128: 4
 ldouble: 5
 
 Function: "tgamma_downward":
-double: 5
+double: 8
 float: 7
 float128: 5
 ldouble: 5
 
 Function: "tgamma_towardzero":
-double: 5
+double: 9
 float: 7
 float128: 5
 ldouble: 5
 
 Function: "tgamma_upward":
-double: 5
+double: 9
 float: 8
 float128: 4
 ldouble: 5