This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: patch with larger errors for "float"


On 1/20/20 11:22 AM, paul zimmermann wrote:
>> In general when creating patches like this we would look for a
>> complete patch that could be applied with git-am, this includes a
>> commit message that describes how you achieved these numbers.
> sorry, attached is a new version generated with "git format-patch".
> The way I found those numbers is not fully reproducible, since I
> ran mpcheck with random seeds several times. Should I use fixed
> seeds instead?

It doesn't matter that the numbers are not fully reproducible, but
that you describe how you attained them e.g. what tool did you use
and how did you call it. This gives guidance to others looking to
extend the work that you did.

>> It would also be great if you updated the ULPs file for x86_64
>> given the larger error bounds e.g. make regenulps.
> changes to sysdeps/x86_64/fpu/libm-test-ulps are included

Perfect.
 
>> The detailed contribution checklist for glibc is here:
>> https://sourceware.org/glibc/wiki/Contribution%20checklist
>>
>> It is not clear to me if you need a copyright assignment for the
>> mechanical addition of extra inputs and additions to the ULPs file.
>> I would say you don't because the mechanical nature of the work.
> anyway I am currently working with the FSF to have some proper
> copyright assignment, since I plan to do further contributions
> to the GNU libc.

Thank you! That always makes accepting patches easier.

(1) Does it make sense to add more input data points for the tests?

What you are suggestion with your patch makes sense, and now your patch
includes the input, output, and ULPs adjustment which makes it a complete
patch that should pass the regression testing on x86_64.

Just to confirm, does it pass make check without regression?

(2) Are we changing all the things we need to change?

Yes, you add inputs to 10 functions, and then add outputs to 10 function
files for testing. That looks correct.

(3) Implementation details:
 
> 0001-patch-with-larger-errors-for-float.patch
> 
> From e35b865fd91d40097c034cab75acbdd6d45d59c5 Mon Sep 17 00:00:00 2001
> From: Paul Zimmermann <Paul.Zimmermann@inria.fr>
> Date: Mon, 20 Jan 2020 17:09:14 +0100
> Subject: [PATCH] patch with larger errors for "float"
Your first line in git should probably be something like:

"math: Add inputs that yield larger errors for float type"


> The corner cases included were generated using
> MPCHECK (http://mpcheck.gforge.inria.fr/), more precisely running:
> 
> $ ./mpcheck-float --num=1000000 --verbose=3
> 
> several times, and looking in the output for "glibc error bound xxx exceeded".

OK. Perfect, that is exactly what I was looking to see in the commit message.

> ---
>  math/auto-libm-test-in            |  18 ++++++
>  math/auto-libm-test-out-acosh     |  75 ++++++++++++++++++++++
>  math/auto-libm-test-out-asinh     |  25 ++++++++
>  math/auto-libm-test-out-atan2     |  75 ++++++++++++++++++++++
>  math/auto-libm-test-out-cosh      |  25 ++++++++
>  math/auto-libm-test-out-erf       |  50 +++++++++++++++
>  math/auto-libm-test-out-erfc      |  25 ++++++++
>  math/auto-libm-test-out-sin       |  25 ++++++++
>  math/auto-libm-test-out-sinh      |  25 ++++++++
>  math/auto-libm-test-out-tan       | 100 ++++++++++++++++++++++++++++++
>  math/auto-libm-test-out-tanh      |  25 ++++++++
>  sysdeps/x86_64/fpu/libm-test-ulps |  36 +++++------
>  12 files changed, 486 insertions(+), 18 deletions(-)
> 
> diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
> index ee56983d75..49e7aef044 100644
> --- a/math/auto-libm-test-in
> +++ b/math/auto-libm-test-in
> @@ -140,6 +140,9 @@ acosh 0x1.1b836p+0
>  acosh 0x1.07c956p+0
>  acosh 0x1.1808eep+0
>  acosh 0x1.1052c4p+0

I would add a comment here:

# mpcheck shows the next 3 values generate larger error bounds:

> +acosh 0x1.007d78p+0
> +acosh 0x1.02006cp+0
> +acosh 0x1.01dae8p+0

OK.

>  acosh max no-test-inline
>  
>  add 0 0
> @@ -371,6 +374,7 @@ asinh -0x6.e26358p-4
>  asinh 0x6.c92c08p-4
>  asinh 0x1p-500
>  asinh 0x1p-5000

Likewise: 

# mpcheck shows the next value generates larger error bounds:

> +asinh 0x8.4a4800p-4

OK.

>  asinh min
>  asinh -min
>  asinh min_subnorm
> @@ -468,6 +472,9 @@ atan2 -0x6.b0794p-4 0x3.8ff10cp+0
>  atan2 -0x7.15e7af0a1780cp-724 0xf.fffffp+124
>  atan2 0x3.f16f1p+0 -0x1.546056p+0
>  atan2 -0x1.9e657cp-24 0x7.40bb4p-52

Likewise:

# mpcheck shows the next 3 values generate larger error bounds:

> +atan2 -0x8.3cd300p-4 0xf.abba40p-4
> +atan2 0x8.5cb7c0p-4 0xf.951600p-4
> +atan2 0x8.673c20p-4 0xf.fb8540p-4

OK.

>  atan2 min min
>  atan2 min -min
>  atan2 -min min
> @@ -4451,6 +4458,7 @@ cosh 0x2.f5d128p+0
>  cosh -0xd.0c03p+0
>  cosh -0x3.d04328728b72cp-4
>  cosh 0x1.629188p+4

Likewise: 

# mpcheck shows the next value generates larger error bounds:

> +cosh 0xf.f0df10p-4

OK.

>  cosh max no-test-inline
>  cosh -max no-test-inline
>  cosh min
> @@ -4897,6 +4905,8 @@ erf 0x1p-60
>  erf 0x1p-100
>  erf 0x1p-600
>  erf 0x1p-10000

Likewise:

# mpcheck shows the next 2 values generate larger error bounds:

> +erf 0xd.7bf020p-4
> +erf 0xd.212730p-4

OK.

>  erf min
>  erf -min
>  erf min_subnorm
> @@ -4982,6 +4992,7 @@ erfc 0x6.a8a0561d8bbe942p+4
>  erfc 0x6.a8a0561d8bbe9428p+4
>  erfc 0x6.a893032db905274042fb05c665dcp+4
>  erfc 0x6.a893032db905274042fb05c665ep+4

Likewise: 

# mpcheck shows the next value generates larger error bounds:


> +erfc 0x2.0b3fecp+0

OK.

>  erfc min
>  erfc -min
>  erfc min_subnorm
> @@ -7205,6 +7216,7 @@ sin 0x6.287cc8749212e72p+0
>  sin -0x1.02e34cp+0
>  sin 0xf.f0274p+4
>  sin 0x3.042d88p+0

Likewise: 

# mpcheck shows the next value generates larger error bounds:

> +sin 0x3.9be184p+8

OK.

>  sin max
>  sin -max
>  sin min
> @@ -7301,6 +7313,7 @@ sinh -0x1.3dda8ap+0
>  sinh -0x5.ee9218p-4
>  sinh -0x1.bcfc98p+0
>  sinh -0x6.9bbb6df7c5d08p-4

Likewise: 

# mpcheck shows the next value generates larger error bounds:

> +sinh 0x5.96a7d8p+4

OK.

>  sinh max no-test-inline
>  sinh -max no-test-inline
>  sinh min
> @@ -7569,6 +7582,10 @@ tan 0x1p-60
>  tan 0x1p-100
>  tan 0x1p-600
>  tan 0x1p-10000

Likewise:

# mpcheck shows the next 4 values generate larger error bounds:

> +tan 0x3.ca1598p+8
> +tan -0x3.adcdb4p+8
> +tan -0x3.67cac0p+8
> +tan 0x2.ab4be0p+8

OK.

>  tan max
>  tan -max
>  tan min
> @@ -7651,6 +7668,7 @@ tanh 0x1p-60
>  tanh 0x1p-100
>  tanh 0x1p-600
>  tanh 0x1p-10000

Likewise: 

# mpcheck shows the next value generates larger error bounds:

> +tanh -0x8.4f7ca0p-4

OK.

>  tanh max
>  tanh -max
>  tanh min

This way we have some informative comments for these values.

Many of the values are historical, but I always like to see why a particular
value is in the test case.

> diff --git a/math/auto-libm-test-out-acosh b/math/auto-libm-test-out-acosh
> index 57cfaee1ff..e77e466a81 100644
> --- a/math/auto-libm-test-out-acosh
> +++ b/math/auto-libm-test-out-acosh
> @@ -1898,6 +1898,81 @@ acosh 0x1.1052c4p+0
>  = acosh tonearest ibm128 0x1.1052c4p+0 : 0x5.af0cbc66dcd4992c060eb8ff4ap-4 : inexact-ok
>  = acosh towardzero ibm128 0x1.1052c4p+0 : 0x5.af0cbc66dcd4992c060eb8ff48p-4 : inexact-ok
>  = acosh upward ibm128 0x1.1052c4p+0 : 0x5.af0cbc66dcd4992c060eb8ff4ap-4 : inexact-ok
> +acosh 0x1.007d78p+0
> += acosh downward binary32 0x1.007d78p+0 : 0xf.d6a6ap-8 : inexact-ok
> += acosh tonearest binary32 0x1.007d78p+0 : 0xf.d6a6bp-8 : inexact-ok
> += acosh towardzero binary32 0x1.007d78p+0 : 0xf.d6a6ap-8 : inexact-ok
> += acosh upward binary32 0x1.007d78p+0 : 0xf.d6a6bp-8 : inexact-ok
> += acosh downward binary64 0x1.007d78p+0 : 0xf.d6a6abc968f28p-8 : inexact-ok
> += acosh tonearest binary64 0x1.007d78p+0 : 0xf.d6a6abc968f3p-8 : inexact-ok
> += acosh towardzero binary64 0x1.007d78p+0 : 0xf.d6a6abc968f28p-8 : inexact-ok
> += acosh upward binary64 0x1.007d78p+0 : 0xf.d6a6abc968f3p-8 : inexact-ok
> += acosh downward intel96 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdp-8 : inexact-ok
> += acosh tonearest intel96 0x1.007d78p+0 : 0xf.d6a6abc968f2ecep-8 : inexact-ok
> += acosh towardzero intel96 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdp-8 : inexact-ok
> += acosh upward intel96 0x1.007d78p+0 : 0xf.d6a6abc968f2ecep-8 : inexact-ok
> += acosh downward m68k96 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdp-8 : inexact-ok
> += acosh tonearest m68k96 0x1.007d78p+0 : 0xf.d6a6abc968f2ecep-8 : inexact-ok
> += acosh towardzero m68k96 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdp-8 : inexact-ok
> += acosh upward m68k96 0x1.007d78p+0 : 0xf.d6a6abc968f2ecep-8 : inexact-ok
> += acosh downward binary128 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdbb46e108a1438p-8 : inexact-ok
> += acosh tonearest binary128 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdbb46e108a144p-8 : inexact-ok
> += acosh towardzero binary128 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdbb46e108a1438p-8 : inexact-ok
> += acosh upward binary128 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdbb46e108a144p-8 : inexact-ok
> += acosh downward ibm128 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdbb46e108a14p-8 : inexact-ok
> += acosh tonearest ibm128 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdbb46e108a14p-8 : inexact-ok
> += acosh towardzero ibm128 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdbb46e108a14p-8 : inexact-ok
> += acosh upward ibm128 0x1.007d78p+0 : 0xf.d6a6abc968f2ecdbb46e108a18p-8 : inexact-ok
> +acosh 0x1.02006cp+0
> += acosh downward binary32 0x1.02006cp+0 : 0x1.ffe0b2p-4 : inexact-ok
> += acosh tonearest binary32 0x1.02006cp+0 : 0x1.ffe0b4p-4 : inexact-ok
> += acosh towardzero binary32 0x1.02006cp+0 : 0x1.ffe0b2p-4 : inexact-ok
> += acosh upward binary32 0x1.02006cp+0 : 0x1.ffe0b4p-4 : inexact-ok
> += acosh downward binary64 0x1.02006cp+0 : 0x1.ffe0b33457ea5p-4 : inexact-ok
> += acosh tonearest binary64 0x1.02006cp+0 : 0x1.ffe0b33457ea6p-4 : inexact-ok
> += acosh towardzero binary64 0x1.02006cp+0 : 0x1.ffe0b33457ea5p-4 : inexact-ok
> += acosh upward binary64 0x1.02006cp+0 : 0x1.ffe0b33457ea6p-4 : inexact-ok
> += acosh downward intel96 0x1.02006cp+0 : 0x1.ffe0b33457ea5b22p-4 : inexact-ok
> += acosh tonearest intel96 0x1.02006cp+0 : 0x1.ffe0b33457ea5b22p-4 : inexact-ok
> += acosh towardzero intel96 0x1.02006cp+0 : 0x1.ffe0b33457ea5b22p-4 : inexact-ok
> += acosh upward intel96 0x1.02006cp+0 : 0x1.ffe0b33457ea5b24p-4 : inexact-ok
> += acosh downward m68k96 0x1.02006cp+0 : 0x1.ffe0b33457ea5b22p-4 : inexact-ok
> += acosh tonearest m68k96 0x1.02006cp+0 : 0x1.ffe0b33457ea5b22p-4 : inexact-ok
> += acosh towardzero m68k96 0x1.02006cp+0 : 0x1.ffe0b33457ea5b22p-4 : inexact-ok
> += acosh upward m68k96 0x1.02006cp+0 : 0x1.ffe0b33457ea5b24p-4 : inexact-ok
> += acosh downward binary128 0x1.02006cp+0 : 0x1.ffe0b33457ea5b2219dc98b3d5a2p-4 : inexact-ok
> += acosh tonearest binary128 0x1.02006cp+0 : 0x1.ffe0b33457ea5b2219dc98b3d5a2p-4 : inexact-ok
> += acosh towardzero binary128 0x1.02006cp+0 : 0x1.ffe0b33457ea5b2219dc98b3d5a2p-4 : inexact-ok
> += acosh upward binary128 0x1.02006cp+0 : 0x1.ffe0b33457ea5b2219dc98b3d5a3p-4 : inexact-ok
> += acosh downward ibm128 0x1.02006cp+0 : 0x1.ffe0b33457ea5b2219dc98b3d58p-4 : inexact-ok
> += acosh tonearest ibm128 0x1.02006cp+0 : 0x1.ffe0b33457ea5b2219dc98b3d58p-4 : inexact-ok
> += acosh towardzero ibm128 0x1.02006cp+0 : 0x1.ffe0b33457ea5b2219dc98b3d58p-4 : inexact-ok
> += acosh upward ibm128 0x1.02006cp+0 : 0x1.ffe0b33457ea5b2219dc98b3d6p-4 : inexact-ok
> +acosh 0x1.01dae8p+0
> += acosh downward binary32 0x1.01dae8p+0 : 0x1.eccea2p-4 : inexact-ok
> += acosh tonearest binary32 0x1.01dae8p+0 : 0x1.eccea2p-4 : inexact-ok
> += acosh towardzero binary32 0x1.01dae8p+0 : 0x1.eccea2p-4 : inexact-ok
> += acosh upward binary32 0x1.01dae8p+0 : 0x1.eccea4p-4 : inexact-ok
> += acosh downward binary64 0x1.01dae8p+0 : 0x1.eccea2363d1edp-4 : inexact-ok
> += acosh tonearest binary64 0x1.01dae8p+0 : 0x1.eccea2363d1eep-4 : inexact-ok
> += acosh towardzero binary64 0x1.01dae8p+0 : 0x1.eccea2363d1edp-4 : inexact-ok
> += acosh upward binary64 0x1.01dae8p+0 : 0x1.eccea2363d1eep-4 : inexact-ok
> += acosh downward intel96 0x1.01dae8p+0 : 0x1.eccea2363d1edcacp-4 : inexact-ok
> += acosh tonearest intel96 0x1.01dae8p+0 : 0x1.eccea2363d1edcacp-4 : inexact-ok
> += acosh towardzero intel96 0x1.01dae8p+0 : 0x1.eccea2363d1edcacp-4 : inexact-ok
> += acosh upward intel96 0x1.01dae8p+0 : 0x1.eccea2363d1edcaep-4 : inexact-ok
> += acosh downward m68k96 0x1.01dae8p+0 : 0x1.eccea2363d1edcacp-4 : inexact-ok
> += acosh tonearest m68k96 0x1.01dae8p+0 : 0x1.eccea2363d1edcacp-4 : inexact-ok
> += acosh towardzero m68k96 0x1.01dae8p+0 : 0x1.eccea2363d1edcacp-4 : inexact-ok
> += acosh upward m68k96 0x1.01dae8p+0 : 0x1.eccea2363d1edcaep-4 : inexact-ok
> += acosh downward binary128 0x1.01dae8p+0 : 0x1.eccea2363d1edcac2f514e1f4cafp-4 : inexact-ok
> += acosh tonearest binary128 0x1.01dae8p+0 : 0x1.eccea2363d1edcac2f514e1f4cafp-4 : inexact-ok
> += acosh towardzero binary128 0x1.01dae8p+0 : 0x1.eccea2363d1edcac2f514e1f4cafp-4 : inexact-ok
> += acosh upward binary128 0x1.01dae8p+0 : 0x1.eccea2363d1edcac2f514e1f4cbp-4 : inexact-ok
> += acosh downward ibm128 0x1.01dae8p+0 : 0x1.eccea2363d1edcac2f514e1f4c8p-4 : inexact-ok
> += acosh tonearest ibm128 0x1.01dae8p+0 : 0x1.eccea2363d1edcac2f514e1f4c8p-4 : inexact-ok
> += acosh towardzero ibm128 0x1.01dae8p+0 : 0x1.eccea2363d1edcac2f514e1f4c8p-4 : inexact-ok
> += acosh upward ibm128 0x1.01dae8p+0 : 0x1.eccea2363d1edcac2f514e1f4dp-4 : inexact-ok

OK, all 3 values accounted for.

>  acosh max no-test-inline
>  = acosh downward binary32 0xf.fffffp+124 : 0x5.96a7ep+4 : no-test-inline inexact-ok
>  = acosh tonearest binary32 0xf.fffffp+124 : 0x5.96a7ep+4 : no-test-inline inexact-ok
> diff --git a/math/auto-libm-test-out-asinh b/math/auto-libm-test-out-asinh
> index 07bce930e7..e84216dcfc 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 0x8.4a4800p-4
> += asinh downward binary32 0x8.4a48p-4 : 0x7.f53d98p-4 : inexact-ok
> += asinh tonearest binary32 0x8.4a48p-4 : 0x7.f53dap-4 : inexact-ok
> += asinh towardzero binary32 0x8.4a48p-4 : 0x7.f53d98p-4 : inexact-ok
> += asinh upward binary32 0x8.4a48p-4 : 0x7.f53dap-4 : inexact-ok
> += asinh downward binary64 0x8.4a48p-4 : 0x7.f53d9e39849f8p-4 : inexact-ok
> += asinh tonearest binary64 0x8.4a48p-4 : 0x7.f53d9e39849f8p-4 : inexact-ok
> += asinh towardzero binary64 0x8.4a48p-4 : 0x7.f53d9e39849f8p-4 : inexact-ok
> += asinh upward binary64 0x8.4a48p-4 : 0x7.f53d9e39849fcp-4 : inexact-ok
> += asinh downward intel96 0x8.4a48p-4 : 0x7.f53d9e39849f9f1p-4 : inexact-ok
> += asinh tonearest intel96 0x8.4a48p-4 : 0x7.f53d9e39849f9f1p-4 : inexact-ok
> += asinh towardzero intel96 0x8.4a48p-4 : 0x7.f53d9e39849f9f1p-4 : inexact-ok
> += asinh upward intel96 0x8.4a48p-4 : 0x7.f53d9e39849f9f18p-4 : inexact-ok
> += asinh downward m68k96 0x8.4a48p-4 : 0x7.f53d9e39849f9f1p-4 : inexact-ok
> += asinh tonearest m68k96 0x8.4a48p-4 : 0x7.f53d9e39849f9f1p-4 : inexact-ok
> += asinh towardzero m68k96 0x8.4a48p-4 : 0x7.f53d9e39849f9f1p-4 : inexact-ok
> += asinh upward m68k96 0x8.4a48p-4 : 0x7.f53d9e39849f9f18p-4 : inexact-ok
> += asinh downward binary128 0x8.4a48p-4 : 0x7.f53d9e39849f9f11f838643409dp-4 : inexact-ok
> += asinh tonearest binary128 0x8.4a48p-4 : 0x7.f53d9e39849f9f11f838643409d4p-4 : inexact-ok
> += asinh towardzero binary128 0x8.4a48p-4 : 0x7.f53d9e39849f9f11f838643409dp-4 : inexact-ok
> += asinh upward binary128 0x8.4a48p-4 : 0x7.f53d9e39849f9f11f838643409d4p-4 : inexact-ok
> += asinh downward ibm128 0x8.4a48p-4 : 0x7.f53d9e39849f9f11f838643408p-4 : inexact-ok
> += asinh tonearest ibm128 0x8.4a48p-4 : 0x7.f53d9e39849f9f11f83864340ap-4 : inexact-ok
> += asinh towardzero ibm128 0x8.4a48p-4 : 0x7.f53d9e39849f9f11f838643408p-4 : inexact-ok
> += asinh upward ibm128 0x8.4a48p-4 : 0x7.f53d9e39849f9f11f83864340ap-4 : inexact-ok

OK. One value accounted for.

>  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-atan2 b/math/auto-libm-test-out-atan2
> index 8b45bbcfdb..3f97915742 100644
> --- a/math/auto-libm-test-out-atan2
> +++ b/math/auto-libm-test-out-atan2
> @@ -5193,6 +5193,81 @@ atan2 -0x1.9e657cp-24 0x7.40bb4p-52
>  = atan2 tonearest ibm128 -0x1.9e657cp-24 0x7.40bb4p-52 : -0x1.921fb4fc926936de7a5c281605p+0 : inexact-ok
>  = atan2 towardzero ibm128 -0x1.9e657cp-24 0x7.40bb4p-52 : -0x1.921fb4fc926936de7a5c281605p+0 : inexact-ok
>  = atan2 upward ibm128 -0x1.9e657cp-24 0x7.40bb4p-52 : -0x1.921fb4fc926936de7a5c281605p+0 : inexact-ok
> +atan2 -0x8.3cd300p-4 0xf.abba40p-4
> += atan2 downward binary32 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be555p-4 : inexact-ok
> += atan2 tonearest binary32 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be555p-4 : inexact-ok
> += atan2 towardzero binary32 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be5548p-4 : inexact-ok
> += atan2 upward binary32 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be5548p-4 : inexact-ok
> += atan2 downward binary64 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c4p-4 : inexact-ok
> += atan2 tonearest binary64 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c4p-4 : inexact-ok
> += atan2 towardzero binary64 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6cp-4 : inexact-ok
> += atan2 upward binary64 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6cp-4 : inexact-ok
> += atan2 downward intel96 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e48p-4 : inexact-ok
> += atan2 tonearest intel96 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e48p-4 : inexact-ok
> += atan2 towardzero intel96 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e4p-4 : inexact-ok
> += atan2 upward intel96 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e4p-4 : inexact-ok
> += atan2 downward m68k96 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e48p-4 : inexact-ok
> += atan2 tonearest m68k96 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e48p-4 : inexact-ok
> += atan2 towardzero m68k96 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e4p-4 : inexact-ok
> += atan2 upward m68k96 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e4p-4 : inexact-ok
> += atan2 downward binary128 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e47a6d1c59eaf78p-4 : inexact-ok
> += atan2 tonearest binary128 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e47a6d1c59eaf74p-4 : inexact-ok
> += atan2 towardzero binary128 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e47a6d1c59eaf74p-4 : inexact-ok
> += atan2 upward binary128 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e47a6d1c59eaf74p-4 : inexact-ok
> += atan2 downward ibm128 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e47a6d1c59ebp-4 : inexact-ok
> += atan2 tonearest ibm128 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e47a6d1c59ebp-4 : inexact-ok
> += atan2 towardzero ibm128 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e47a6d1c59eaep-4 : inexact-ok
> += atan2 upward ibm128 -0x8.3cd3p-4 0xf.abba4p-4 : -0x7.be554cb8ad6c2e47a6d1c59eaep-4 : inexact-ok
> +atan2 0x8.5cb7c0p-4 0xf.951600p-4
> += atan2 downward binary32 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e16838p-4 : inexact-ok
> += atan2 tonearest binary32 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e16838p-4 : inexact-ok
> += atan2 towardzero binary32 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e16838p-4 : inexact-ok
> += atan2 upward binary32 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1684p-4 : inexact-ok
> += atan2 downward binary64 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cp-4 : inexact-ok
> += atan2 tonearest binary64 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cp-4 : inexact-ok
> += atan2 towardzero binary64 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cp-4 : inexact-ok
> += atan2 upward binary64 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc6p-4 : inexact-ok
> += atan2 downward intel96 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb2p-4 : inexact-ok
> += atan2 tonearest intel96 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb28p-4 : inexact-ok
> += atan2 towardzero intel96 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb2p-4 : inexact-ok
> += atan2 upward intel96 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb28p-4 : inexact-ok
> += atan2 downward m68k96 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb2p-4 : inexact-ok
> += atan2 tonearest m68k96 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb28p-4 : inexact-ok
> += atan2 towardzero m68k96 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb2p-4 : inexact-ok
> += atan2 upward m68k96 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb28p-4 : inexact-ok
> += atan2 downward binary128 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb27d4c18f307a64p-4 : inexact-ok
> += atan2 tonearest binary128 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb27d4c18f307a64p-4 : inexact-ok
> += atan2 towardzero binary128 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb27d4c18f307a64p-4 : inexact-ok
> += atan2 upward binary128 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb27d4c18f307a68p-4 : inexact-ok
> += atan2 downward ibm128 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb27d4c18f307ap-4 : inexact-ok
> += atan2 tonearest ibm128 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb27d4c18f307ap-4 : inexact-ok
> += atan2 towardzero ibm128 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb27d4c18f307ap-4 : inexact-ok
> += atan2 upward ibm128 0x8.5cb7cp-4 0xf.9516p-4 : 0x7.e1683bcdccc5cb27d4c18f307cp-4 : inexact-ok
> +atan2 0x8.673c20p-4 0xf.fb8540p-4
> += atan2 downward binary32 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2e8p-4 : inexact-ok
> += atan2 tonearest binary32 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2fp-4 : inexact-ok
> += atan2 towardzero binary32 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2e8p-4 : inexact-ok
> += atan2 upward binary32 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2fp-4 : inexact-ok
> += atan2 downward binary64 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a1258p-4 : inexact-ok
> += atan2 tonearest binary64 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a1258p-4 : inexact-ok
> += atan2 towardzero binary64 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a1258p-4 : inexact-ok
> += atan2 upward binary64 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a125cp-4 : inexact-ok
> += atan2 downward intel96 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588bp-4 : inexact-ok
> += atan2 tonearest intel96 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b8p-4 : inexact-ok
> += atan2 towardzero intel96 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588bp-4 : inexact-ok
> += atan2 upward intel96 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b8p-4 : inexact-ok
> += atan2 downward m68k96 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588bp-4 : inexact-ok
> += atan2 tonearest m68k96 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b8p-4 : inexact-ok
> += atan2 towardzero m68k96 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588bp-4 : inexact-ok
> += atan2 upward m68k96 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b8p-4 : inexact-ok
> += atan2 downward binary128 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b714fee0e34564p-4 : inexact-ok
> += atan2 tonearest binary128 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b714fee0e34568p-4 : inexact-ok
> += atan2 towardzero binary128 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b714fee0e34564p-4 : inexact-ok
> += atan2 upward binary128 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b714fee0e34568p-4 : inexact-ok
> += atan2 downward ibm128 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b714fee0e344p-4 : inexact-ok
> += atan2 tonearest ibm128 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b714fee0e346p-4 : inexact-ok
> += atan2 towardzero ibm128 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b714fee0e344p-4 : inexact-ok
> += atan2 upward ibm128 0x8.673c2p-4 0xf.fb854p-4 : 0x7.beb2ec55a12588b714fee0e346p-4 : inexact-ok

OK, 3 values accounted for.

>  atan2 min min
>  = atan2 downward binary32 0x4p-128 0x4p-128 : 0xc.90fdap-4 : inexact-ok
>  = atan2 tonearest binary32 0x4p-128 0x4p-128 : 0xc.90fdbp-4 : inexact-ok
> diff --git a/math/auto-libm-test-out-cosh b/math/auto-libm-test-out-cosh
> index f7a77e69a2..c0fde19bfe 100644
> --- a/math/auto-libm-test-out-cosh
> +++ b/math/auto-libm-test-out-cosh
> @@ -955,6 +955,31 @@ cosh 0x1.629188p+4
>  = cosh tonearest ibm128 0x1.629188p+4 : 0x7.d716115677b7981c1502cadb3ep+28 : inexact-ok
>  = cosh towardzero ibm128 0x1.629188p+4 : 0x7.d716115677b7981c1502cadb3cp+28 : inexact-ok
>  = cosh upward ibm128 0x1.629188p+4 : 0x7.d716115677b7981c1502cadb3ep+28 : inexact-ok
> +cosh 0xf.f0df10p-4
> += cosh downward binary32 0xf.f0df1p-4 : 0x1.89eb8cp+0 : inexact-ok
> += cosh tonearest binary32 0xf.f0df1p-4 : 0x1.89eb8ep+0 : inexact-ok
> += cosh towardzero binary32 0xf.f0df1p-4 : 0x1.89eb8cp+0 : inexact-ok
> += cosh upward binary32 0xf.f0df1p-4 : 0x1.89eb8ep+0 : inexact-ok
> += cosh downward binary64 0xf.f0df1p-4 : 0x1.89eb8dd869002p+0 : inexact-ok
> += cosh tonearest binary64 0xf.f0df1p-4 : 0x1.89eb8dd869002p+0 : inexact-ok
> += cosh towardzero binary64 0xf.f0df1p-4 : 0x1.89eb8dd869002p+0 : inexact-ok
> += cosh upward binary64 0xf.f0df1p-4 : 0x1.89eb8dd869003p+0 : inexact-ok
> += cosh downward intel96 0xf.f0df1p-4 : 0x1.89eb8dd869002502p+0 : inexact-ok
> += cosh tonearest intel96 0xf.f0df1p-4 : 0x1.89eb8dd869002504p+0 : inexact-ok
> += cosh towardzero intel96 0xf.f0df1p-4 : 0x1.89eb8dd869002502p+0 : inexact-ok
> += cosh upward intel96 0xf.f0df1p-4 : 0x1.89eb8dd869002504p+0 : inexact-ok
> += cosh downward m68k96 0xf.f0df1p-4 : 0x1.89eb8dd869002502p+0 : inexact-ok
> += cosh tonearest m68k96 0xf.f0df1p-4 : 0x1.89eb8dd869002504p+0 : inexact-ok
> += cosh towardzero m68k96 0xf.f0df1p-4 : 0x1.89eb8dd869002502p+0 : inexact-ok
> += cosh upward m68k96 0xf.f0df1p-4 : 0x1.89eb8dd869002504p+0 : inexact-ok
> += cosh downward binary128 0xf.f0df1p-4 : 0x1.89eb8dd869002503088a270ef435p+0 : inexact-ok
> += cosh tonearest binary128 0xf.f0df1p-4 : 0x1.89eb8dd869002503088a270ef436p+0 : inexact-ok
> += cosh towardzero binary128 0xf.f0df1p-4 : 0x1.89eb8dd869002503088a270ef435p+0 : inexact-ok
> += cosh upward binary128 0xf.f0df1p-4 : 0x1.89eb8dd869002503088a270ef436p+0 : inexact-ok
> += cosh downward ibm128 0xf.f0df1p-4 : 0x1.89eb8dd869002503088a270ef4p+0 : inexact-ok
> += cosh tonearest ibm128 0xf.f0df1p-4 : 0x1.89eb8dd869002503088a270ef4p+0 : inexact-ok
> += cosh towardzero ibm128 0xf.f0df1p-4 : 0x1.89eb8dd869002503088a270ef4p+0 : inexact-ok
> += cosh upward ibm128 0xf.f0df1p-4 : 0x1.89eb8dd869002503088a270ef48p+0 : inexact-ok

OK, 1 value accounted for.

>  cosh max no-test-inline
>  = cosh downward binary32 0xf.fffffp+124 : 0xf.fffffp+124 : no-test-inline inexact-ok overflow errno-erange-ok
>  = cosh tonearest binary32 0xf.fffffp+124 : plus_infty : no-test-inline inexact-ok overflow errno-erange
> diff --git a/math/auto-libm-test-out-erf b/math/auto-libm-test-out-erf
> index 35cd28ce37..ba31467b37 100644
> --- a/math/auto-libm-test-out-erf
> +++ b/math/auto-libm-test-out-erf
> @@ -2719,6 +2719,56 @@ erf 0x1p-10000
>  = erf tonearest binary128 0x1p-10000 : 0x1.20dd750429b6d11ae3a914fed7fep-10000 : inexact-ok
>  = erf towardzero binary128 0x1p-10000 : 0x1.20dd750429b6d11ae3a914fed7fdp-10000 : inexact-ok
>  = erf upward binary128 0x1p-10000 : 0x1.20dd750429b6d11ae3a914fed7fep-10000 : inexact-ok
> +erf 0xd.7bf020p-4
> += erf downward binary32 0xd.7bf02p-4 : 0xc.444e2p-4 : inexact-ok
> += erf tonearest binary32 0xd.7bf02p-4 : 0xc.444e2p-4 : inexact-ok
> += erf towardzero binary32 0xd.7bf02p-4 : 0xc.444e2p-4 : inexact-ok
> += erf upward binary32 0xd.7bf02p-4 : 0xc.444e3p-4 : inexact-ok
> += erf downward binary64 0xd.7bf02p-4 : 0xc.444e277024a7p-4 : inexact-ok
> += erf tonearest binary64 0xd.7bf02p-4 : 0xc.444e277024a78p-4 : inexact-ok
> += erf towardzero binary64 0xd.7bf02p-4 : 0xc.444e277024a7p-4 : inexact-ok
> += erf upward binary64 0xd.7bf02p-4 : 0xc.444e277024a78p-4 : inexact-ok
> += erf downward intel96 0xd.7bf02p-4 : 0xc.444e277024a77efp-4 : inexact-ok
> += erf tonearest intel96 0xd.7bf02p-4 : 0xc.444e277024a77fp-4 : inexact-ok
> += erf towardzero intel96 0xd.7bf02p-4 : 0xc.444e277024a77efp-4 : inexact-ok
> += erf upward intel96 0xd.7bf02p-4 : 0xc.444e277024a77fp-4 : inexact-ok
> += erf downward m68k96 0xd.7bf02p-4 : 0xc.444e277024a77efp-4 : inexact-ok
> += erf tonearest m68k96 0xd.7bf02p-4 : 0xc.444e277024a77fp-4 : inexact-ok
> += erf towardzero m68k96 0xd.7bf02p-4 : 0xc.444e277024a77efp-4 : inexact-ok
> += erf upward m68k96 0xd.7bf02p-4 : 0xc.444e277024a77fp-4 : inexact-ok
> += erf downward binary128 0xd.7bf02p-4 : 0xc.444e277024a77eff720bba7a987p-4 : inexact-ok
> += erf tonearest binary128 0xd.7bf02p-4 : 0xc.444e277024a77eff720bba7a987p-4 : inexact-ok
> += erf towardzero binary128 0xd.7bf02p-4 : 0xc.444e277024a77eff720bba7a987p-4 : inexact-ok
> += erf upward binary128 0xd.7bf02p-4 : 0xc.444e277024a77eff720bba7a9878p-4 : inexact-ok
> += erf downward ibm128 0xd.7bf02p-4 : 0xc.444e277024a77eff720bba7a98p-4 : inexact-ok
> += erf tonearest ibm128 0xd.7bf02p-4 : 0xc.444e277024a77eff720bba7a98p-4 : inexact-ok
> += erf towardzero ibm128 0xd.7bf02p-4 : 0xc.444e277024a77eff720bba7a98p-4 : inexact-ok
> += erf upward ibm128 0xd.7bf02p-4 : 0xc.444e277024a77eff720bba7a9cp-4 : inexact-ok
> +erf 0xd.212730p-4
> += erf downward binary32 0xd.21273p-4 : 0xc.11027p-4 : inexact-ok
> += erf tonearest binary32 0xd.21273p-4 : 0xc.11028p-4 : inexact-ok
> += erf towardzero binary32 0xd.21273p-4 : 0xc.11027p-4 : inexact-ok
> += erf upward binary32 0xd.21273p-4 : 0xc.11028p-4 : inexact-ok
> += erf downward binary64 0xd.21273p-4 : 0xc.11027834d5648p-4 : inexact-ok
> += erf tonearest binary64 0xd.21273p-4 : 0xc.11027834d5648p-4 : inexact-ok
> += erf towardzero binary64 0xd.21273p-4 : 0xc.11027834d5648p-4 : inexact-ok
> += erf upward binary64 0xd.21273p-4 : 0xc.11027834d565p-4 : inexact-ok
> += erf downward intel96 0xd.21273p-4 : 0xc.11027834d564aa6p-4 : inexact-ok
> += erf tonearest intel96 0xd.21273p-4 : 0xc.11027834d564aa6p-4 : inexact-ok
> += erf towardzero intel96 0xd.21273p-4 : 0xc.11027834d564aa6p-4 : inexact-ok
> += erf upward intel96 0xd.21273p-4 : 0xc.11027834d564aa7p-4 : inexact-ok
> += erf downward m68k96 0xd.21273p-4 : 0xc.11027834d564aa6p-4 : inexact-ok
> += erf tonearest m68k96 0xd.21273p-4 : 0xc.11027834d564aa6p-4 : inexact-ok
> += erf towardzero m68k96 0xd.21273p-4 : 0xc.11027834d564aa6p-4 : inexact-ok
> += erf upward m68k96 0xd.21273p-4 : 0xc.11027834d564aa7p-4 : inexact-ok
> += erf downward binary128 0xd.21273p-4 : 0xc.11027834d564aa612ff2babb8d08p-4 : inexact-ok
> += erf tonearest binary128 0xd.21273p-4 : 0xc.11027834d564aa612ff2babb8d08p-4 : inexact-ok
> += erf towardzero binary128 0xd.21273p-4 : 0xc.11027834d564aa612ff2babb8d08p-4 : inexact-ok
> += erf upward binary128 0xd.21273p-4 : 0xc.11027834d564aa612ff2babb8d1p-4 : inexact-ok
> += erf downward ibm128 0xd.21273p-4 : 0xc.11027834d564aa612ff2babb8cp-4 : inexact-ok
> += erf tonearest ibm128 0xd.21273p-4 : 0xc.11027834d564aa612ff2babb8cp-4 : inexact-ok
> += erf towardzero ibm128 0xd.21273p-4 : 0xc.11027834d564aa612ff2babb8cp-4 : inexact-ok
> += erf upward ibm128 0xd.21273p-4 : 0xc.11027834d564aa612ff2babb9p-4 : inexact-ok

OK, 2 values accounted for.

>  erf min
>  = erf downward binary32 0x4p-128 : 0x4.8375dp-128 : inexact-ok
>  = erf tonearest binary32 0x4p-128 : 0x4.8375d8p-128 : inexact-ok
> diff --git a/math/auto-libm-test-out-erfc b/math/auto-libm-test-out-erfc
> index 257370e5ba..c21979ffa3 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 0x2.0b3fecp+0
> += erfc downward binary32 0x2.0b3fecp+0 : 0xf.c030ap-12 : inexact-ok
> += erfc tonearest binary32 0x2.0b3fecp+0 : 0xf.c030ap-12 : inexact-ok
> += erfc towardzero binary32 0x2.0b3fecp+0 : 0xf.c030ap-12 : inexact-ok
> += erfc upward binary32 0x2.0b3fecp+0 : 0xf.c030bp-12 : inexact-ok
> += erfc downward binary64 0x2.0b3fecp+0 : 0xf.c030a36acaedp-12 : inexact-ok
> += erfc tonearest binary64 0x2.0b3fecp+0 : 0xf.c030a36acaed8p-12 : inexact-ok
> += erfc towardzero binary64 0x2.0b3fecp+0 : 0xf.c030a36acaedp-12 : inexact-ok
> += erfc upward binary64 0x2.0b3fecp+0 : 0xf.c030a36acaed8p-12 : inexact-ok
> += erfc downward intel96 0x2.0b3fecp+0 : 0xf.c030a36acaed75bp-12 : inexact-ok
> += erfc tonearest intel96 0x2.0b3fecp+0 : 0xf.c030a36acaed75bp-12 : inexact-ok
> += erfc towardzero intel96 0x2.0b3fecp+0 : 0xf.c030a36acaed75bp-12 : inexact-ok
> += erfc upward intel96 0x2.0b3fecp+0 : 0xf.c030a36acaed75cp-12 : inexact-ok
> += erfc downward m68k96 0x2.0b3fecp+0 : 0xf.c030a36acaed75bp-12 : inexact-ok
> += erfc tonearest m68k96 0x2.0b3fecp+0 : 0xf.c030a36acaed75bp-12 : inexact-ok
> += erfc towardzero m68k96 0x2.0b3fecp+0 : 0xf.c030a36acaed75bp-12 : inexact-ok
> += erfc upward m68k96 0x2.0b3fecp+0 : 0xf.c030a36acaed75cp-12 : inexact-ok
> += erfc downward binary128 0x2.0b3fecp+0 : 0xf.c030a36acaed75b6f5d7140b25c8p-12 : inexact-ok
> += erfc tonearest binary128 0x2.0b3fecp+0 : 0xf.c030a36acaed75b6f5d7140b25dp-12 : inexact-ok
> += erfc towardzero binary128 0x2.0b3fecp+0 : 0xf.c030a36acaed75b6f5d7140b25c8p-12 : inexact-ok
> += erfc upward binary128 0x2.0b3fecp+0 : 0xf.c030a36acaed75b6f5d7140b25dp-12 : inexact-ok
> += erfc downward ibm128 0x2.0b3fecp+0 : 0xf.c030a36acaed75b6f5d7140b24p-12 : inexact-ok
> += erfc tonearest ibm128 0x2.0b3fecp+0 : 0xf.c030a36acaed75b6f5d7140b24p-12 : inexact-ok
> += erfc towardzero ibm128 0x2.0b3fecp+0 : 0xf.c030a36acaed75b6f5d7140b24p-12 : inexact-ok
> += erfc upward ibm128 0x2.0b3fecp+0 : 0xf.c030a36acaed75b6f5d7140b28p-12 : inexact-ok
>  erfc min

OK, one value accounted for.

>  = 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-sin b/math/auto-libm-test-out-sin
> index 4826063340..fbc4e733db 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 0x3.9be184p+8
> += sin downward binary32 0x3.9be184p+8 : 0x3.fffffcp-4 : inexact-ok
> += sin tonearest binary32 0x3.9be184p+8 : 0x4p-4 : inexact-ok
> += sin towardzero binary32 0x3.9be184p+8 : 0x3.fffffcp-4 : inexact-ok
> += sin upward binary32 0x3.9be184p+8 : 0x4p-4 : inexact-ok
> += sin downward binary64 0x3.9be184p+8 : 0x3.ffffffe661626p-4 : inexact-ok
> += sin tonearest binary64 0x3.9be184p+8 : 0x3.ffffffe661628p-4 : inexact-ok
> += sin towardzero binary64 0x3.9be184p+8 : 0x3.ffffffe661626p-4 : inexact-ok
> += sin upward binary64 0x3.9be184p+8 : 0x3.ffffffe661628p-4 : inexact-ok
> += sin downward intel96 0x3.9be184p+8 : 0x3.ffffffe661627e74p-4 : inexact-ok
> += sin tonearest intel96 0x3.9be184p+8 : 0x3.ffffffe661627e78p-4 : inexact-ok
> += sin towardzero intel96 0x3.9be184p+8 : 0x3.ffffffe661627e74p-4 : inexact-ok
> += sin upward intel96 0x3.9be184p+8 : 0x3.ffffffe661627e78p-4 : inexact-ok
> += sin downward m68k96 0x3.9be184p+8 : 0x3.ffffffe661627e74p-4 : inexact-ok
> += sin tonearest m68k96 0x3.9be184p+8 : 0x3.ffffffe661627e78p-4 : inexact-ok
> += sin towardzero m68k96 0x3.9be184p+8 : 0x3.ffffffe661627e74p-4 : inexact-ok
> += sin upward m68k96 0x3.9be184p+8 : 0x3.ffffffe661627e78p-4 : inexact-ok
> += sin downward binary128 0x3.9be184p+8 : 0x3.ffffffe661627e76e22955fb9666p-4 : inexact-ok
> += sin tonearest binary128 0x3.9be184p+8 : 0x3.ffffffe661627e76e22955fb9668p-4 : inexact-ok
> += sin towardzero binary128 0x3.9be184p+8 : 0x3.ffffffe661627e76e22955fb9666p-4 : inexact-ok
> += sin upward binary128 0x3.9be184p+8 : 0x3.ffffffe661627e76e22955fb9668p-4 : inexact-ok
> += sin downward ibm128 0x3.9be184p+8 : 0x3.ffffffe661627e76e22955fb96p-4 : inexact-ok
> += sin tonearest ibm128 0x3.9be184p+8 : 0x3.ffffffe661627e76e22955fb96p-4 : inexact-ok
> += sin towardzero ibm128 0x3.9be184p+8 : 0x3.ffffffe661627e76e22955fb96p-4 : inexact-ok
> += sin upward ibm128 0x3.9be184p+8 : 0x3.ffffffe661627e76e22955fb97p-4 : inexact-ok

OK, one value accounted for.

>  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-sinh b/math/auto-libm-test-out-sinh
> index 6b64c51365..3b2b65ce12 100644
> --- a/math/auto-libm-test-out-sinh
> +++ b/math/auto-libm-test-out-sinh
> @@ -2115,6 +2115,31 @@ sinh -0x6.9bbb6df7c5d08p-4
>  = sinh tonearest ibm128 -0x6.9bbb6df7c5d08p-4 : -0x6.cc3ddf003dcda77f8f9e892e36p-4 : inexact-ok
>  = sinh towardzero ibm128 -0x6.9bbb6df7c5d08p-4 : -0x6.cc3ddf003dcda77f8f9e892e36p-4 : inexact-ok
>  = sinh upward ibm128 -0x6.9bbb6df7c5d08p-4 : -0x6.cc3ddf003dcda77f8f9e892e36p-4 : inexact-ok
> +sinh 0x5.96a7d8p+4
> += sinh downward binary32 0x5.96a7d8p+4 : 0xf.fff6cp+124 : inexact-ok
> += sinh tonearest binary32 0x5.96a7d8p+4 : 0xf.fff6cp+124 : inexact-ok
> += sinh towardzero binary32 0x5.96a7d8p+4 : 0xf.fff6cp+124 : inexact-ok
> += sinh upward binary32 0x5.96a7d8p+4 : 0xf.fff6dp+124 : inexact-ok
> += sinh downward binary64 0x5.96a7d8p+4 : 0xf.fff6c1f71299p+124 : inexact-ok
> += sinh tonearest binary64 0x5.96a7d8p+4 : 0xf.fff6c1f712998p+124 : inexact-ok
> += sinh towardzero binary64 0x5.96a7d8p+4 : 0xf.fff6c1f71299p+124 : inexact-ok
> += sinh upward binary64 0x5.96a7d8p+4 : 0xf.fff6c1f712998p+124 : inexact-ok
> += sinh downward intel96 0x5.96a7d8p+4 : 0xf.fff6c1f71299564p+124 : inexact-ok
> += sinh tonearest intel96 0x5.96a7d8p+4 : 0xf.fff6c1f71299564p+124 : inexact-ok
> += sinh towardzero intel96 0x5.96a7d8p+4 : 0xf.fff6c1f71299564p+124 : inexact-ok
> += sinh upward intel96 0x5.96a7d8p+4 : 0xf.fff6c1f71299565p+124 : inexact-ok
> += sinh downward m68k96 0x5.96a7d8p+4 : 0xf.fff6c1f71299564p+124 : inexact-ok
> += sinh tonearest m68k96 0x5.96a7d8p+4 : 0xf.fff6c1f71299564p+124 : inexact-ok
> += sinh towardzero m68k96 0x5.96a7d8p+4 : 0xf.fff6c1f71299564p+124 : inexact-ok
> += sinh upward m68k96 0x5.96a7d8p+4 : 0xf.fff6c1f71299565p+124 : inexact-ok
> += sinh downward binary128 0x5.96a7d8p+4 : 0xf.fff6c1f71299564235eff84be69p+124 : inexact-ok
> += sinh tonearest binary128 0x5.96a7d8p+4 : 0xf.fff6c1f71299564235eff84be698p+124 : inexact-ok
> += sinh towardzero binary128 0x5.96a7d8p+4 : 0xf.fff6c1f71299564235eff84be69p+124 : inexact-ok
> += sinh upward binary128 0x5.96a7d8p+4 : 0xf.fff6c1f71299564235eff84be698p+124 : inexact-ok
> += sinh downward ibm128 0x5.96a7d8p+4 : 0xf.fff6c1f71299564235eff84be4p+124 : inexact-ok
> += sinh tonearest ibm128 0x5.96a7d8p+4 : 0xf.fff6c1f71299564235eff84be8p+124 : inexact-ok
> += sinh towardzero ibm128 0x5.96a7d8p+4 : 0xf.fff6c1f71299564235eff84be4p+124 : inexact-ok
> += sinh upward ibm128 0x5.96a7d8p+4 : 0xf.fff6c1f71299564235eff84be8p+124 : inexact-ok

OK, one value accounted for.

>  sinh max no-test-inline
>  = sinh downward binary32 0xf.fffffp+124 : 0xf.fffffp+124 : no-test-inline inexact-ok overflow errno-erange-ok
>  = sinh tonearest binary32 0xf.fffffp+124 : plus_infty : no-test-inline inexact-ok overflow errno-erange
> diff --git a/math/auto-libm-test-out-tan b/math/auto-libm-test-out-tan
> index 7d00d03e1d..4fcac32dc8 100644
> --- a/math/auto-libm-test-out-tan
> +++ b/math/auto-libm-test-out-tan
> @@ -3007,6 +3007,106 @@ tan 0x1p-10000
>  = tan tonearest binary128 0x1p-10000 : 0x1p-10000 : inexact-ok
>  = tan towardzero binary128 0x1p-10000 : 0x1p-10000 : inexact-ok
>  = tan upward binary128 0x1p-10000 : 0x1.0000000000000000000000000001p-10000 : inexact-ok
> +tan 0x3.ca1598p+8
> += tan downward binary32 0x3.ca1598p+8 : -0xc.9e4b6p-4 : inexact-ok
> += tan tonearest binary32 0x3.ca1598p+8 : -0xc.9e4b6p-4 : inexact-ok
> += tan towardzero binary32 0x3.ca1598p+8 : -0xc.9e4b5p-4 : inexact-ok
> += tan upward binary32 0x3.ca1598p+8 : -0xc.9e4b5p-4 : inexact-ok
> += tan downward binary64 0x3.ca1598p+8 : -0xc.9e4b59282b718p-4 : inexact-ok
> += tan tonearest binary64 0x3.ca1598p+8 : -0xc.9e4b59282b71p-4 : inexact-ok
> += tan towardzero binary64 0x3.ca1598p+8 : -0xc.9e4b59282b71p-4 : inexact-ok
> += tan upward binary64 0x3.ca1598p+8 : -0xc.9e4b59282b71p-4 : inexact-ok
> += tan downward intel96 0x3.ca1598p+8 : -0xc.9e4b59282b7125ep-4 : inexact-ok
> += tan tonearest intel96 0x3.ca1598p+8 : -0xc.9e4b59282b7125dp-4 : inexact-ok
> += tan towardzero intel96 0x3.ca1598p+8 : -0xc.9e4b59282b7125dp-4 : inexact-ok
> += tan upward intel96 0x3.ca1598p+8 : -0xc.9e4b59282b7125dp-4 : inexact-ok
> += tan downward m68k96 0x3.ca1598p+8 : -0xc.9e4b59282b7125ep-4 : inexact-ok
> += tan tonearest m68k96 0x3.ca1598p+8 : -0xc.9e4b59282b7125dp-4 : inexact-ok
> += tan towardzero m68k96 0x3.ca1598p+8 : -0xc.9e4b59282b7125dp-4 : inexact-ok
> += tan upward m68k96 0x3.ca1598p+8 : -0xc.9e4b59282b7125dp-4 : inexact-ok
> += tan downward binary128 0x3.ca1598p+8 : -0xc.9e4b59282b7125d25d2db81724a8p-4 : inexact-ok
> += tan tonearest binary128 0x3.ca1598p+8 : -0xc.9e4b59282b7125d25d2db81724a8p-4 : inexact-ok
> += tan towardzero binary128 0x3.ca1598p+8 : -0xc.9e4b59282b7125d25d2db81724ap-4 : inexact-ok
> += tan upward binary128 0x3.ca1598p+8 : -0xc.9e4b59282b7125d25d2db81724ap-4 : inexact-ok
> += tan downward ibm128 0x3.ca1598p+8 : -0xc.9e4b59282b7125d25d2db81728p-4 : inexact-ok
> += tan tonearest ibm128 0x3.ca1598p+8 : -0xc.9e4b59282b7125d25d2db81724p-4 : inexact-ok
> += tan towardzero ibm128 0x3.ca1598p+8 : -0xc.9e4b59282b7125d25d2db81724p-4 : inexact-ok
> += tan upward ibm128 0x3.ca1598p+8 : -0xc.9e4b59282b7125d25d2db81724p-4 : inexact-ok
> +tan -0x3.adcdb4p+8
> += tan downward binary32 -0x3.adcdb4p+8 : 0xc.c9a03p-4 : inexact-ok
> += tan tonearest binary32 -0x3.adcdb4p+8 : 0xc.c9a04p-4 : inexact-ok
> += tan towardzero binary32 -0x3.adcdb4p+8 : 0xc.c9a03p-4 : inexact-ok
> += tan upward binary32 -0x3.adcdb4p+8 : 0xc.c9a04p-4 : inexact-ok
> += tan downward binary64 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a2p-4 : inexact-ok
> += tan tonearest binary64 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a2p-4 : inexact-ok
> += tan towardzero binary64 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a2p-4 : inexact-ok
> += tan upward binary64 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a28p-4 : inexact-ok
> += tan downward intel96 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e7p-4 : inexact-ok
> += tan tonearest intel96 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e7p-4 : inexact-ok
> += tan towardzero intel96 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e7p-4 : inexact-ok
> += tan upward intel96 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e8p-4 : inexact-ok
> += tan downward m68k96 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e7p-4 : inexact-ok
> += tan tonearest m68k96 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e7p-4 : inexact-ok
> += tan towardzero m68k96 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e7p-4 : inexact-ok
> += tan upward m68k96 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e8p-4 : inexact-ok
> += tan downward binary128 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e70dda53c164bp-4 : inexact-ok
> += tan tonearest binary128 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e70dda53c164b08p-4 : inexact-ok
> += tan towardzero binary128 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e70dda53c164bp-4 : inexact-ok
> += tan upward binary128 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e70dda53c164b08p-4 : inexact-ok
> += tan downward ibm128 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e70dda53c1648p-4 : inexact-ok
> += tan tonearest ibm128 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e70dda53c164cp-4 : inexact-ok
> += tan towardzero ibm128 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e70dda53c1648p-4 : inexact-ok
> += tan upward ibm128 -0x3.adcdb4p+8 : 0xc.c9a039f2b0a21e70dda53c164cp-4 : inexact-ok
> +tan -0x3.67cac0p+8
> += tan downward binary32 -0x3.67cacp+8 : 0x7.ec253p+12 : inexact-ok
> += tan tonearest binary32 -0x3.67cacp+8 : 0x7.ec253p+12 : inexact-ok
> += tan towardzero binary32 -0x3.67cacp+8 : 0x7.ec253p+12 : inexact-ok
> += tan upward binary32 -0x3.67cacp+8 : 0x7.ec2538p+12 : inexact-ok
> += tan downward binary64 -0x3.67cacp+8 : 0x7.ec25330921684p+12 : inexact-ok
> += tan tonearest binary64 -0x3.67cacp+8 : 0x7.ec25330921688p+12 : inexact-ok
> += tan towardzero binary64 -0x3.67cacp+8 : 0x7.ec25330921684p+12 : inexact-ok
> += tan upward binary64 -0x3.67cacp+8 : 0x7.ec25330921688p+12 : inexact-ok
> += tan downward intel96 -0x3.67cacp+8 : 0x7.ec25330921687588p+12 : inexact-ok
> += tan tonearest intel96 -0x3.67cacp+8 : 0x7.ec25330921687588p+12 : inexact-ok
> += tan towardzero intel96 -0x3.67cacp+8 : 0x7.ec25330921687588p+12 : inexact-ok
> += tan upward intel96 -0x3.67cacp+8 : 0x7.ec2533092168759p+12 : inexact-ok
> += tan downward m68k96 -0x3.67cacp+8 : 0x7.ec25330921687588p+12 : inexact-ok
> += tan tonearest m68k96 -0x3.67cacp+8 : 0x7.ec25330921687588p+12 : inexact-ok
> += tan towardzero m68k96 -0x3.67cacp+8 : 0x7.ec25330921687588p+12 : inexact-ok
> += tan upward m68k96 -0x3.67cacp+8 : 0x7.ec2533092168759p+12 : inexact-ok
> += tan downward binary128 -0x3.67cacp+8 : 0x7.ec2533092168758ab3cd52722834p+12 : inexact-ok
> += tan tonearest binary128 -0x3.67cacp+8 : 0x7.ec2533092168758ab3cd52722838p+12 : inexact-ok
> += tan towardzero binary128 -0x3.67cacp+8 : 0x7.ec2533092168758ab3cd52722834p+12 : inexact-ok
> += tan upward binary128 -0x3.67cacp+8 : 0x7.ec2533092168758ab3cd52722838p+12 : inexact-ok
> += tan downward ibm128 -0x3.67cacp+8 : 0x7.ec2533092168758ab3cd527228p+12 : inexact-ok
> += tan tonearest ibm128 -0x3.67cacp+8 : 0x7.ec2533092168758ab3cd527228p+12 : inexact-ok
> += tan towardzero ibm128 -0x3.67cacp+8 : 0x7.ec2533092168758ab3cd527228p+12 : inexact-ok
> += tan upward ibm128 -0x3.67cacp+8 : 0x7.ec2533092168758ab3cd52722ap+12 : inexact-ok
> +tan 0x2.ab4be0p+8
> += tan downward binary32 0x2.ab4bep+8 : 0xf.d0b4cp+12 : inexact-ok
> += tan tonearest binary32 0x2.ab4bep+8 : 0xf.d0b4dp+12 : inexact-ok
> += tan towardzero binary32 0x2.ab4bep+8 : 0xf.d0b4cp+12 : inexact-ok
> += tan upward binary32 0x2.ab4bep+8 : 0xf.d0b4dp+12 : inexact-ok
> += tan downward binary64 0x2.ab4bep+8 : 0xf.d0b4ccf16e658p+12 : inexact-ok
> += tan tonearest binary64 0x2.ab4bep+8 : 0xf.d0b4ccf16e658p+12 : inexact-ok
> += tan towardzero binary64 0x2.ab4bep+8 : 0xf.d0b4ccf16e658p+12 : inexact-ok
> += tan upward binary64 0x2.ab4bep+8 : 0xf.d0b4ccf16e66p+12 : inexact-ok
> += tan downward intel96 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2ap+12 : inexact-ok
> += tan tonearest intel96 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2ap+12 : inexact-ok
> += tan towardzero intel96 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2ap+12 : inexact-ok
> += tan upward intel96 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2bp+12 : inexact-ok
> += tan downward m68k96 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2ap+12 : inexact-ok
> += tan tonearest m68k96 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2ap+12 : inexact-ok
> += tan towardzero m68k96 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2ap+12 : inexact-ok
> += tan upward m68k96 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2bp+12 : inexact-ok
> += tan downward binary128 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2a0dfeae24b69e8p+12 : inexact-ok
> += tan tonearest binary128 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2a0dfeae24b69e8p+12 : inexact-ok
> += tan towardzero binary128 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2a0dfeae24b69e8p+12 : inexact-ok
> += tan upward binary128 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2a0dfeae24b69fp+12 : inexact-ok
> += tan downward ibm128 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2a0dfeae24b68p+12 : inexact-ok
> += tan tonearest ibm128 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2a0dfeae24b68p+12 : inexact-ok
> += tan towardzero ibm128 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2a0dfeae24b68p+12 : inexact-ok
> += tan upward ibm128 0x2.ab4bep+8 : 0xf.d0b4ccf16e65b2a0dfeae24b6cp+12 : inexact-ok

OK, 4 values accounted for.

>  tan max
>  = tan downward binary32 0xf.fffffp+124 : -0x9.c9ecbp-4 : inexact-ok
>  = tan tonearest binary32 0xf.fffffp+124 : -0x9.c9ecap-4 : inexact-ok
> diff --git a/math/auto-libm-test-out-tanh b/math/auto-libm-test-out-tanh
> index 1a12701392..970ad25664 100644
> --- a/math/auto-libm-test-out-tanh
> +++ b/math/auto-libm-test-out-tanh
> @@ -2289,6 +2289,31 @@ tanh 0x1p-10000
>  = tanh tonearest binary128 0x1p-10000 : 0x1p-10000 : inexact-ok
>  = tanh towardzero binary128 0x1p-10000 : 0xf.fffffffffffffffffffffffffff8p-10004 : inexact-ok
>  = tanh upward binary128 0x1p-10000 : 0x1p-10000 : inexact-ok
> +tanh -0x8.4f7ca0p-4
> += tanh downward binary32 -0x8.4f7cap-4 : -0x7.a2c7e8p-4 : inexact-ok
> += tanh tonearest binary32 -0x8.4f7cap-4 : -0x7.a2c7ep-4 : inexact-ok
> += tanh towardzero binary32 -0x8.4f7cap-4 : -0x7.a2c7ep-4 : inexact-ok
> += tanh upward binary32 -0x8.4f7cap-4 : -0x7.a2c7ep-4 : inexact-ok
> += tanh downward binary64 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b4p-4 : inexact-ok
> += tanh tonearest binary64 -0x8.4f7cap-4 : -0x7.a2c7e127aa0bp-4 : inexact-ok
> += tanh towardzero binary64 -0x8.4f7cap-4 : -0x7.a2c7e127aa0bp-4 : inexact-ok
> += tanh upward binary64 -0x8.4f7cap-4 : -0x7.a2c7e127aa0bp-4 : inexact-ok
> += tanh downward intel96 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c2p-4 : inexact-ok
> += tanh tonearest intel96 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c2p-4 : inexact-ok
> += tanh towardzero intel96 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c18p-4 : inexact-ok
> += tanh upward intel96 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c18p-4 : inexact-ok
> += tanh downward m68k96 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c2p-4 : inexact-ok
> += tanh tonearest m68k96 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c2p-4 : inexact-ok
> += tanh towardzero m68k96 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c18p-4 : inexact-ok
> += tanh upward m68k96 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c18p-4 : inexact-ok
> += tanh downward binary128 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c1c2b6176111918p-4 : inexact-ok
> += tanh tonearest binary128 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c1c2b6176111918p-4 : inexact-ok
> += tanh towardzero binary128 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c1c2b6176111914p-4 : inexact-ok
> += tanh upward binary128 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c1c2b6176111914p-4 : inexact-ok
> += tanh downward ibm128 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c1c2b6176111ap-4 : inexact-ok
> += tanh tonearest ibm128 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c1c2b6176111ap-4 : inexact-ok
> += tanh towardzero ibm128 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c1c2b61761118p-4 : inexact-ok
> += tanh upward ibm128 -0x8.4f7cap-4 : -0x7.a2c7e127aa0b0c1c2b61761118p-4 : inexact-ok

OK, 1 value accounted for.

>  tanh max
>  = tanh downward binary32 0xf.fffffp+124 : 0xf.fffffp-4 : inexact-ok
>  = tanh tonearest binary32 0xf.fffffp+124 : 0x1p+0 : inexact-ok
> diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
> index ee5bcbd05c..cc6b20eecf 100644
> --- a/sysdeps/x86_64/fpu/libm-test-ulps
> +++ b/sysdeps/x86_64/fpu/libm-test-ulps
> @@ -51,30 +51,30 @@ ldouble: 2
>  
>  Function: "acosh_downward":
>  double: 2
> -float: 2
> +float: 3

OK.

>  float128: 3
>  idouble: 2
> -ifloat: 2
> +ifloat: 3

OK.

>  ifloat128: 3
>  ildouble: 4
>  ldouble: 4
>  
>  Function: "acosh_towardzero":
>  double: 2
> -float: 2
> +float: 3

OK.

>  float128: 2
>  idouble: 2
> -ifloat: 2
> +ifloat: 3

OK.

>  ifloat128: 2
>  ildouble: 4
>  ldouble: 4
>  
>  Function: "acosh_upward":
>  double: 2
> -float: 2
> +float: 3

OK.

>  float128: 2
>  idouble: 2
> -ifloat: 2
> +ifloat: 3

OK.

>  ifloat128: 2
>  ildouble: 3
>  ldouble: 3
> @@ -119,10 +119,10 @@ ldouble: 1
>  
>  Function: "asinh":
>  double: 1
> -float: 1
> +float: 2

OK.

>  float128: 3
>  idouble: 1
> -ifloat: 1
> +ifloat: 2

OK.

>  ifloat128: 3
>  ildouble: 3
>  ldouble: 3
> @@ -1871,10 +1871,10 @@ ldouble: 1
>  
>  Function: "erfc":
>  double: 3
> -float: 2
> +float: 3

OK.

>  float128: 2
>  idouble: 3
> -ifloat: 2
> +ifloat: 3

OK.

>  ifloat128: 2
>  ildouble: 3
>  ldouble: 3
> @@ -2673,10 +2673,10 @@ ldouble: 5
>  
>  Function: "sinh_towardzero":
>  double: 2
> -float: 2
> +float: 3

OK.

>  float128: 3
>  idouble: 2
> -ifloat: 2
> +ifloat: 3

OK.

>  ifloat128: 3
>  ildouble: 4
>  ldouble: 4
> @@ -2711,20 +2711,20 @@ ldouble: 3
>  
>  Function: "tan_towardzero":
>  double: 1
> -float: 1
> +float: 2

OK.

>  float128: 1
>  idouble: 1
> -ifloat: 1
> +ifloat: 2

OK.

>  ifloat128: 1
>  ildouble: 3
>  ldouble: 3
>  
>  Function: "tan_upward":
>  double: 1
> -float: 1
> +float: 2

OK.

>  float128: 1
>  idouble: 1
> -ifloat: 1
> +ifloat: 2

OK.

>  ifloat128: 1
>  ildouble: 2
>  ldouble: 2
> @@ -2751,10 +2751,10 @@ ldouble: 4
>  
>  Function: "tanh_towardzero":
>  double: 2
> -float: 2
> +float: 3

OK.

>  float128: 3
>  idouble: 2
> -ifloat: 2
> +ifloat: 3

OK.

>  ifloat128: 3
>  ildouble: 3
>  ldouble: 3
> -- 2.24.1

Could you please send a v2 with the adjustments made?

-- 
Cheers,
Carlos.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]