[COMMITTED] Regenerate sparc ULPs.
diff mbox

Message ID 20140413.231141.1503644473158925927.davem@davemloft.net
State New
Headers show

Commit Message

David Miller April 14, 2014, 3:11 a.m. UTC
* sysdeps/sparc/fpu/libm-test-ulps: Update.
---

This doesn't fix all the ULP issues during the testsuite on sparc,
some are not accepted by the maximum ULP limits encoded into libm-test.inc

For example, for test-float and test-ifloat y1_upward gets a ULP of 10,
and for test-ldouble and test-ildoubl y1_upward gets a ULP of 10 and
y1_downward gets a ULP of 13.

I see that we use an upper limit of 13 for IBM long double in the
inexact cases... should we use something similar for 128-bit IEEE
cases as well?

 ChangeLog                        |    4 +
 sysdeps/sparc/fpu/libm-test-ulps | 1048 +++++++++++++++++++++++++++++++++++++-
 2 files changed, 1037 insertions(+), 15 deletions(-)

Comments

Stefan Liebler April 14, 2014, 8:56 a.m. UTC | #1
Hi,

on s390 test-ldouble / test-ildoubl shows the same ULP for y1(0x2p+0)
(see https://www.sourceware.org/ml/libc-alpha/2014-04/msg00271.html).

Please test the posted patch.

Bye.

On 04/14/2014 05:11 AM, David Miller wrote:
>
>
> 	* sysdeps/sparc/fpu/libm-test-ulps: Update.
> ---
>
> This doesn't fix all the ULP issues during the testsuite on sparc,
> some are not accepted by the maximum ULP limits encoded into libm-test.inc
>
> For example, for test-float and test-ifloat y1_upward gets a ULP of 10,
> and for test-ldouble and test-ildoubl y1_upward gets a ULP of 10 and
> y1_downward gets a ULP of 13.
>
> I see that we use an upper limit of 13 for IBM long double in the
> inexact cases... should we use something similar for 128-bit IEEE
> cases as well?
>
>   ChangeLog                        |    4 +
>   sysdeps/sparc/fpu/libm-test-ulps | 1048 +++++++++++++++++++++++++++++++++++++-
>   2 files changed, 1037 insertions(+), 15 deletions(-)
>
> diff --git a/ChangeLog b/ChangeLog
> index a42e08e..431c7c0 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,7 @@
> +2014-04-13  David S. Miller  <davem@davemloft.net>
> +
> +	* sysdeps/sparc/fpu/libm-test-ulps: Update.
> +
>   2014-04-12  Allan McRae  <allan@archlinux.org>
>
>   	[BZ #16838]
> diff --git a/sysdeps/sparc/fpu/libm-test-ulps b/sysdeps/sparc/fpu/libm-test-ulps
> index 80e4283..3ce8a7c 100644
> --- a/sysdeps/sparc/fpu/libm-test-ulps
> +++ b/sysdeps/sparc/fpu/libm-test-ulps
> @@ -61,18 +61,112 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: "asinh_downward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "asinh_towardzero":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "asinh_upward":
> +double: 2
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
>   Function: "atan2":
>   float: 1
>   ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: "atan2_downward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "atan2_towardzero":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "atan2_upward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "atan_downward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "atan_towardzero":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "atan_upward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
>   Function: "atanh":
>   float: 1
>   ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: "atanh_downward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "atanh_towardzero":
> +float: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "atanh_upward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
>   Function: Real part of "cacos":
>   double: 1
>   float: 2
> @@ -105,6 +199,74 @@ ifloat: 2
>   ildouble: 2
>   ldouble: 2
>
> +Function: Real part of "cacosh_downward":
> +double: 5
> +float: 3
> +idouble: 5
> +ifloat: 3
> +ildouble: 5
> +ldouble: 5
> +
> +Function: Imaginary part of "cacosh_downward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "cacosh_towardzero":
> +double: 5
> +float: 3
> +idouble: 5
> +ifloat: 3
> +ildouble: 5
> +ldouble: 5
> +
> +Function: Imaginary part of "cacosh_towardzero":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "cacosh_upward":
> +double: 4
> +float: 4
> +idouble: 4
> +ifloat: 4
> +ildouble: 5
> +ldouble: 5
> +
> +Function: Imaginary part of "cacosh_upward":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 3
> +ldouble: 3
> +
> +Function: "carg_downward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "carg_towardzero":
> +float: 1
> +ifloat: 1
> +
> +Function: "carg_upward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 1
> +ldouble: 1
> +
>   Function: Real part of "casin":
>   double: 1
>   float: 1
> @@ -121,6 +283,54 @@ ifloat: 2
>   ildouble: 2
>   ldouble: 2
>
> +Function: Real part of "casin_downward":
> +double: 3
> +float: 1
> +idouble: 3
> +ifloat: 1
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "casin_downward":
> +double: 5
> +float: 3
> +idouble: 5
> +ifloat: 3
> +ildouble: 5
> +ldouble: 5
> +
> +Function: Real part of "casin_towardzero":
> +double: 3
> +float: 1
> +idouble: 3
> +ifloat: 1
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "casin_towardzero":
> +double: 5
> +float: 3
> +idouble: 5
> +ifloat: 3
> +ildouble: 5
> +ldouble: 5
> +
> +Function: Real part of "casin_upward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "casin_upward":
> +double: 4
> +float: 4
> +idouble: 4
> +ifloat: 4
> +ildouble: 5
> +ldouble: 5
> +
>   Function: Real part of "casinh":
>   double: 1
>   float: 2
> @@ -137,6 +347,54 @@ ifloat: 1
>   ildouble: 2
>   ldouble: 2
>
> +Function: Real part of "casinh_downward":
> +double: 5
> +float: 3
> +idouble: 5
> +ifloat: 3
> +ildouble: 5
> +ldouble: 5
> +
> +Function: Imaginary part of "casinh_downward":
> +double: 3
> +float: 1
> +idouble: 3
> +ifloat: 1
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Real part of "casinh_towardzero":
> +double: 5
> +float: 3
> +idouble: 5
> +ifloat: 3
> +ildouble: 5
> +ldouble: 5
> +
> +Function: Imaginary part of "casinh_towardzero":
> +double: 3
> +float: 1
> +idouble: 3
> +ifloat: 1
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Real part of "casinh_upward":
> +double: 4
> +float: 4
> +idouble: 4
> +ifloat: 4
> +ildouble: 5
> +ldouble: 5
> +
> +Function: Imaginary part of "casinh_upward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 3
> +ldouble: 3
> +
>   Function: Real part of "catan":
>   float: 1
>   ifloat: 1
> @@ -151,6 +409,54 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: Real part of "catan_downward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "catan_downward":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Real part of "catan_towardzero":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "catan_towardzero":
> +double: 2
> +float: 1
> +idouble: 2
> +ifloat: 1
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Real part of "catan_upward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: Imaginary part of "catan_upward":
> +double: 3
> +float: 3
> +idouble: 3
> +ifloat: 3
> +ildouble: 3
> +ldouble: 3
> +
>   Function: Real part of "catanh":
>   double: 1
>   float: 1
> @@ -165,6 +471,54 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: Real part of "catanh_downward":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "catanh_downward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "catanh_towardzero":
> +double: 2
> +float: 1
> +idouble: 2
> +ifloat: 1
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "catanh_towardzero":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "catanh_upward":
> +double: 4
> +float: 3
> +idouble: 4
> +ifloat: 3
> +ildouble: 4
> +ldouble: 4
> +
> +Function: Imaginary part of "catanh_upward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
>   Function: "cbrt":
>   double: 1
>   float: 1
> @@ -173,6 +527,28 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: "cbrt_downward":
> +double: 2
> +float: 1
> +idouble: 2
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "cbrt_towardzero":
> +double: 2
> +idouble: 2
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "cbrt_upward":
> +double: 3
> +float: 1
> +idouble: 3
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
>   Function: Real part of "ccos":
>   double: 1
>   float: 1
> @@ -189,21 +565,117 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: Real part of "ccos_downward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "ccos_downward":
> +double: 2
> +float: 3
> +idouble: 2
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "ccos_towardzero":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "ccos_towardzero":
> +double: 2
> +float: 3
> +idouble: 2
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "ccos_upward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "ccos_upward":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
>   Function: Real part of "ccosh":
>   double: 1
>   float: 1
>   idouble: 1
> -ifloat: 1
> -ildouble: 1
> -ldouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: Imaginary part of "ccosh":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: Real part of "ccosh_downward":
> +double: 1
> +float: 3
> +idouble: 1
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "ccosh_downward":
> +double: 2
> +float: 3
> +idouble: 2
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "ccosh_towardzero":
> +double: 1
> +float: 3
> +idouble: 1
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
>
> -Function: Imaginary part of "ccosh":
> +Function: Imaginary part of "ccosh_towardzero":
> +double: 2
> +float: 3
> +idouble: 2
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "ccosh_upward":
>   double: 1
> -float: 1
> +float: 2
>   idouble: 1
> -ifloat: 1
> -ildouble: 1
> -ldouble: 1
> +ifloat: 2
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "ccosh_upward":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
>
>   Function: Real part of "cexp":
>   double: 2
> @@ -240,8 +712,8 @@ double: 2
>   float: 2
>   idouble: 2
>   ifloat: 2
> -ildouble: 1
> -ldouble: 1
> +ildouble: 2
> +ldouble: 2
>
>   Function: Imaginary part of "clog10":
>   double: 1
> @@ -251,6 +723,102 @@ ifloat: 1
>   ildouble: 2
>   ldouble: 2
>
> +Function: Real part of "clog10_downward":
> +double: 3
> +float: 3
> +idouble: 3
> +ifloat: 3
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "clog10_downward":
> +double: 3
> +float: 2
> +idouble: 3
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "clog10_towardzero":
> +double: 3
> +float: 2
> +idouble: 3
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "clog10_towardzero":
> +double: 3
> +float: 2
> +idouble: 3
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "clog10_upward":
> +double: 4
> +float: 3
> +idouble: 4
> +ifloat: 3
> +ildouble: 4
> +ldouble: 4
> +
> +Function: Imaginary part of "clog10_upward":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Real part of "clog_downward":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "clog_downward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "clog_towardzero":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "clog_towardzero":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "clog_upward":
> +double: 2
> +float: 1
> +idouble: 2
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "clog_upward":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
>   Function: "cos":
>   float: 1
>   ifloat: 1
> @@ -353,6 +921,54 @@ Function: Imaginary part of "csin":
>   ildouble: 1
>   ldouble: 1
>
> +Function: Real part of "csin_downward":
> +double: 2
> +float: 3
> +idouble: 2
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "csin_downward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Real part of "csin_towardzero":
> +double: 2
> +float: 3
> +idouble: 2
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "csin_towardzero":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Real part of "csin_upward":
> +double: 1
> +float: 3
> +idouble: 1
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "csin_upward":
> +double: 1
> +float: 3
> +idouble: 1
> +ifloat: 3
> +ildouble: 3
> +ldouble: 3
> +
>   Function: Real part of "csinh":
>   float: 1
>   ifloat: 1
> @@ -367,6 +983,54 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: Real part of "csinh_downward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "csinh_downward":
> +double: 2
> +float: 3
> +idouble: 2
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "csinh_towardzero":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "csinh_towardzero":
> +double: 2
> +float: 3
> +idouble: 2
> +ifloat: 3
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Real part of "csinh_upward":
> +double: 1
> +float: 3
> +idouble: 1
> +ifloat: 3
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "csinh_upward":
> +double: 2
> +float: 3
> +idouble: 2
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
>   Function: Real part of "csqrt":
>   double: 1
>   float: 1
> @@ -383,6 +1047,54 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: Real part of "csqrt_downward":
> +double: 3
> +float: 3
> +idouble: 3
> +ifloat: 3
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "csqrt_downward":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "csqrt_towardzero":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Imaginary part of "csqrt_towardzero":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: Real part of "csqrt_upward":
> +double: 3
> +float: 2
> +idouble: 3
> +ifloat: 2
> +ildouble: 3
> +ldouble: 3
> +
> +Function: Imaginary part of "csqrt_upward":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
>   Function: Real part of "ctan":
>   double: 1
>   float: 1
> @@ -543,9 +1255,27 @@ ifloat: 3
>   ildouble: 5
>   ldouble: 5
>
> -Function: "erf":
> -double: 1
> -idouble: 1
> +Function: "erf":
> +double: 1
> +idouble: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "erf_downward":
> +float: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "erf_towardzero":
> +float: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "erf_upward":
> +float: 1
> +ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> @@ -557,6 +1287,30 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: "erfc_downward":
> +double: 1
> +float: 3
> +idouble: 1
> +ifloat: 3
> +ildouble: 3
> +ldouble: 3
> +
> +Function: "erfc_towardzero":
> +double: 1
> +float: 3
> +idouble: 1
> +ifloat: 3
> +ildouble: 3
> +ldouble: 3
> +
> +Function: "erfc_upward":
> +double: 2
> +float: 2
> +idouble: 2
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
>   Function: "exp10":
>   double: 1
>   idouble: 1
> @@ -655,12 +1409,54 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: "gamma_downward":
> +double: 2
> +float: 1
> +idouble: 2
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "gamma_towardzero":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "gamma_upward":
> +double: 1
> +float: 3
> +idouble: 1
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
>   Function: "hypot":
>   double: 1
>   idouble: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: "hypot_downward":
> +double: 1
> +idouble: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "hypot_towardzero":
> +double: 1
> +idouble: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "hypot_upward":
> +double: 1
> +idouble: 1
> +ildouble: 1
> +ldouble: 1
> +
>   Function: "j0":
>   double: 2
>   float: 2
> @@ -669,6 +1465,30 @@ ifloat: 2
>   ildouble: 2
>   ldouble: 2
>
> +Function: "j0_downward":
> +double: 2
> +float: 3
> +idouble: 2
> +ifloat: 3
> +ildouble: 4
> +ldouble: 4
> +
> +Function: "j0_towardzero":
> +double: 3
> +float: 2
> +idouble: 3
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "j0_upward":
> +double: 3
> +float: 2
> +idouble: 3
> +ifloat: 2
> +ildouble: 5
> +ldouble: 5
> +
>   Function: "j1":
>   double: 1
>   float: 2
> @@ -677,6 +1497,30 @@ ifloat: 2
>   ildouble: 4
>   ldouble: 4
>
> +Function: "j1_downward":
> +double: 3
> +float: 2
> +idouble: 3
> +ifloat: 2
> +ildouble: 4
> +ldouble: 4
> +
> +Function: "j1_towardzero":
> +double: 3
> +float: 2
> +idouble: 3
> +ifloat: 2
> +ildouble: 4
> +ldouble: 4
> +
> +Function: "j1_upward":
> +double: 3
> +float: 5
> +idouble: 3
> +ifloat: 5
> +ildouble: 3
> +ldouble: 3
> +
>   Function: "jn":
>   double: 4
>   float: 4
> @@ -693,6 +1537,30 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: "lgamma_downward":
> +double: 2
> +float: 1
> +idouble: 2
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "lgamma_towardzero":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "lgamma_upward":
> +double: 1
> +float: 3
> +idouble: 1
> +ifloat: 3
> +ildouble: 2
> +ldouble: 2
> +
>   Function: "log":
>   float: 1
>   ifloat: 1
> @@ -713,10 +1581,44 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: "log1p_downward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "log1p_towardzero":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "log1p_upward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +
>   Function: "log2":
>   ildouble: 1
>   ldouble: 1
>
> +Function: "log_downward":
> +float: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "log_upward":
> +float: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
>   Function: "pow":
>   float: 1
>   ifloat: 1
> @@ -729,6 +1631,26 @@ idouble: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: "pow10_downward":
> +double: 1
> +idouble: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "pow10_towardzero":
> +double: 1
> +idouble: 1
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "pow10_upward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
>   Function: "pow_downward":
>   float: 1
>   ifloat: 1
> @@ -791,6 +1713,30 @@ ifloat: 1
>   ildouble: 1
>   ldouble: 1
>
> +Function: "sincos_downward":
> +double: 1
> +float: 2
> +idouble: 1
> +ifloat: 2
> +ildouble: 2
> +ldouble: 2
> +
> +Function: "sincos_towardzero":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "sincos_upward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 2
> +ldouble: 2
> +
>   Function: "sinh_downward":
>   double: 1
>   idouble: 1
> @@ -847,6 +1793,30 @@ Function: "tanh":
>   ildouble: 1
>   ldouble: 1
>
> +Function: "tanh_downward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "tanh_towardzero":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
> +Function: "tanh_upward":
> +double: 1
> +float: 1
> +idouble: 1
> +ifloat: 1
> +ildouble: 1
> +ldouble: 1
> +
>   Function: "tgamma":
>   double: 4
>   float: 3
> @@ -863,6 +1833,30 @@ ifloat: 1
>   ildouble: 3
>   ldouble: 3
>
> +Function: "y0_downward":
> +double: 3
> +float: 2
> +idouble: 3
> +ifloat: 2
> +ildouble: 4
> +ldouble: 4
> +
> +Function: "y0_towardzero":
> +double: 3
> +float: 3
> +idouble: 3
> +ifloat: 3
> +ildouble: 3
> +ldouble: 3
> +
> +Function: "y0_upward":
> +double: 3
> +float: 4
> +idouble: 3
> +ifloat: 4
> +ildouble: 3
> +ldouble: 3
> +
>   Function: "y1":
>   double: 3
>   float: 2
> @@ -871,12 +1865,36 @@ ifloat: 2
>   ildouble: 2
>   ldouble: 2
>
> +Function: "y1_downward":
> +double: 3
> +float: 7
> +idouble: 3
> +ifloat: 7
> +ildouble: 4
> +ldouble: 4
> +
> +Function: "y1_towardzero":
> +double: 3
> +float: 3
> +idouble: 3
> +ifloat: 3
> +ildouble: 6
> +ldouble: 6
> +
> +Function: "y1_upward":
> +double: 7
> +float: 5
> +idouble: 7
> +ifloat: 5
> +ildouble: 5
> +ldouble: 5
> +
>   Function: "yn":
>   double: 3
>   float: 2
>   idouble: 3
>   ifloat: 2
> -ildouble: 4
> -ldouble: 4
> +ildouble: 5
> +ldouble: 5
>
>   # end of automatic generation
>
David Miller April 14, 2014, 5:36 p.m. UTC | #2
From: Stefan Liebler <stli@linux.vnet.ibm.com>
Date: Mon, 14 Apr 2014 10:56:24 +0200

> on s390 test-ldouble / test-ildoubl shows the same ULP for y1(0x2p+0)
> (see https://www.sourceware.org/ml/libc-alpha/2014-04/msg00271.html).
> 
> Please test the posted patch.

Yep, it clears the long-double cases for me.

I still have a large ULP of 10 for test-float's y1_upward().
Joseph Myers April 23, 2014, 2:51 p.m. UTC | #3
On Sun, 13 Apr 2014, David Miller wrote:

> For example, for test-float and test-ifloat y1_upward gets a ULP of 10,
> and for test-ldouble and test-ildoubl y1_upward gets a ULP of 10 and
> y1_downward gets a ULP of 13.
> 
> I see that we use an upper limit of 13 for IBM long double in the
> inexact cases... should we use something similar for 128-bit IEEE
> cases as well?

No.  That increased limit is an allowance for IBM long double not being an 
IEEE type and the underlying arithmetic operations having errors of up to 
3 ulps.  If you get larger errors for an IEEE type, the implementations of 
the relevant libm functions should be fixed to reduce error accumulation.
Joseph Myers April 23, 2014, 3:07 p.m. UTC | #4
On Mon, 14 Apr 2014, David Miller wrote:

> From: Stefan Liebler <stli@linux.vnet.ibm.com>
> Date: Mon, 14 Apr 2014 10:56:24 +0200
> 
> > on s390 test-ldouble / test-ildoubl shows the same ULP for y1(0x2p+0)
> > (see https://www.sourceware.org/ml/libc-alpha/2014-04/msg00271.html).
> > 
> > Please test the posted patch.
> 
> Yep, it clears the long-double cases for me.
> 
> I still have a large ULP of 10 for test-float's y1_upward().

I'm going to guess that this doesn't appear on x86_64 because of the 
x86_64 implementation of trig functions using double precision internally 
so having smaller error accumulation than the generic flt-32 versions.  
Saving / restoring the rounding mode in y1f would seem a reasonable 
solution.
David Miller April 23, 2014, 5:03 p.m. UTC | #5
From: "Joseph S. Myers" <joseph@codesourcery.com>
Date: Wed, 23 Apr 2014 14:51:09 +0000

> On Sun, 13 Apr 2014, David Miller wrote:
> 
>> For example, for test-float and test-ifloat y1_upward gets a ULP of 10,
>> and for test-ldouble and test-ildoubl y1_upward gets a ULP of 10 and
>> y1_downward gets a ULP of 13.
>> 
>> I see that we use an upper limit of 13 for IBM long double in the
>> inexact cases... should we use something similar for 128-bit IEEE
>> cases as well?
> 
> No.  That increased limit is an allowance for IBM long double not being an 
> IEEE type and the underlying arithmetic operations having errors of up to 
> 3 ulps.  If you get larger errors for an IEEE type, the implementations of 
> the relevant libm functions should be fixed to reduce error accumulation.

Ok, right now it's just y1_upward() giving me an error of 10 ULPs for
float.
David Miller April 23, 2014, 5:04 p.m. UTC | #6
From: "Joseph S. Myers" <joseph@codesourcery.com>
Date: Wed, 23 Apr 2014 15:07:11 +0000

> On Mon, 14 Apr 2014, David Miller wrote:
> 
>> From: Stefan Liebler <stli@linux.vnet.ibm.com>
>> Date: Mon, 14 Apr 2014 10:56:24 +0200
>> 
>> > on s390 test-ldouble / test-ildoubl shows the same ULP for y1(0x2p+0)
>> > (see https://www.sourceware.org/ml/libc-alpha/2014-04/msg00271.html).
>> > 
>> > Please test the posted patch.
>> 
>> Yep, it clears the long-double cases for me.
>> 
>> I still have a large ULP of 10 for test-float's y1_upward().
> 
> I'm going to guess that this doesn't appear on x86_64 because of the 
> x86_64 implementation of trig functions using double precision internally 
> so having smaller error accumulation than the generic flt-32 versions.  
> Saving / restoring the rounding mode in y1f would seem a reasonable 
> solution.

I'll look into this, thanks Joseph.

Patch
diff mbox

diff --git a/ChangeLog b/ChangeLog
index a42e08e..431c7c0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@ 
+2014-04-13  David S. Miller  <davem@davemloft.net>
+
+	* sysdeps/sparc/fpu/libm-test-ulps: Update.
+
 2014-04-12  Allan McRae  <allan@archlinux.org>
 
 	[BZ #16838]
diff --git a/sysdeps/sparc/fpu/libm-test-ulps b/sysdeps/sparc/fpu/libm-test-ulps
index 80e4283..3ce8a7c 100644
--- a/sysdeps/sparc/fpu/libm-test-ulps
+++ b/sysdeps/sparc/fpu/libm-test-ulps
@@ -61,18 +61,112 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "asinh_downward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "asinh_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "asinh_upward":
+double: 2
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
 Function: "atan2":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "atan2_downward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 1
+ldouble: 1
+
+Function: "atan2_towardzero":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: "atan2_upward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: "atan_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "atan_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "atan_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
 Function: "atanh":
 float: 1
 ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "atanh_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "atanh_towardzero":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "atanh_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
 Function: Real part of "cacos":
 double: 1
 float: 2
@@ -105,6 +199,74 @@  ifloat: 2
 ildouble: 2
 ldouble: 2
 
+Function: Real part of "cacosh_downward":
+double: 5
+float: 3
+idouble: 5
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "cacosh_downward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "cacosh_towardzero":
+double: 5
+float: 3
+idouble: 5
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "cacosh_towardzero":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "cacosh_upward":
+double: 4
+float: 4
+idouble: 4
+ifloat: 4
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "cacosh_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: "carg_downward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 1
+ldouble: 1
+
+Function: "carg_towardzero":
+float: 1
+ifloat: 1
+
+Function: "carg_upward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 1
+ldouble: 1
+
 Function: Real part of "casin":
 double: 1
 float: 1
@@ -121,6 +283,54 @@  ifloat: 2
 ildouble: 2
 ldouble: 2
 
+Function: Real part of "casin_downward":
+double: 3
+float: 1
+idouble: 3
+ifloat: 1
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "casin_downward":
+double: 5
+float: 3
+idouble: 5
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: Real part of "casin_towardzero":
+double: 3
+float: 1
+idouble: 3
+ifloat: 1
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "casin_towardzero":
+double: 5
+float: 3
+idouble: 5
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: Real part of "casin_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "casin_upward":
+double: 4
+float: 4
+idouble: 4
+ifloat: 4
+ildouble: 5
+ldouble: 5
+
 Function: Real part of "casinh":
 double: 1
 float: 2
@@ -137,6 +347,54 @@  ifloat: 1
 ildouble: 2
 ldouble: 2
 
+Function: Real part of "casinh_downward":
+double: 5
+float: 3
+idouble: 5
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "casinh_downward":
+double: 3
+float: 1
+idouble: 3
+ifloat: 1
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "casinh_towardzero":
+double: 5
+float: 3
+idouble: 5
+ifloat: 3
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "casinh_towardzero":
+double: 3
+float: 1
+idouble: 3
+ifloat: 1
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "casinh_upward":
+double: 4
+float: 4
+idouble: 4
+ifloat: 4
+ildouble: 5
+ldouble: 5
+
+Function: Imaginary part of "casinh_upward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
 Function: Real part of "catan":
 float: 1
 ifloat: 1
@@ -151,6 +409,54 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: Real part of "catan_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "catan_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "catan_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "catan_towardzero":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "catan_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: Imaginary part of "catan_upward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
 Function: Real part of "catanh":
 double: 1
 float: 1
@@ -165,6 +471,54 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: Real part of "catanh_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "catanh_downward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "catanh_towardzero":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "catanh_towardzero":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "catanh_upward":
+double: 4
+float: 3
+idouble: 4
+ifloat: 3
+ildouble: 4
+ldouble: 4
+
+Function: Imaginary part of "catanh_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
 Function: "cbrt":
 double: 1
 float: 1
@@ -173,6 +527,28 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "cbrt_downward":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "cbrt_towardzero":
+double: 2
+idouble: 2
+ildouble: 1
+ldouble: 1
+
+Function: "cbrt_upward":
+double: 3
+float: 1
+idouble: 3
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
 Function: Real part of "ccos":
 double: 1
 float: 1
@@ -189,21 +565,117 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: Real part of "ccos_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "ccos_downward":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "ccos_towardzero":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "ccos_towardzero":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "ccos_upward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "ccos_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
 Function: Real part of "ccosh":
 double: 1
 float: 1
 idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: Imaginary part of "ccosh":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: Real part of "ccosh_downward":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "ccosh_downward":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "ccosh_towardzero":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+ildouble: 2
+ldouble: 2
 
-Function: Imaginary part of "ccosh":
+Function: Imaginary part of "ccosh_towardzero":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "ccosh_upward":
 double: 1
-float: 1
+float: 2
 idouble: 1
-ifloat: 1
-ildouble: 1
-ldouble: 1
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "ccosh_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
 
 Function: Real part of "cexp":
 double: 2
@@ -240,8 +712,8 @@  double: 2
 float: 2
 idouble: 2
 ifloat: 2
-ildouble: 1
-ldouble: 1
+ildouble: 2
+ldouble: 2
 
 Function: Imaginary part of "clog10":
 double: 1
@@ -251,6 +723,102 @@  ifloat: 1
 ildouble: 2
 ldouble: 2
 
+Function: Real part of "clog10_downward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "clog10_downward":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "clog10_towardzero":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "clog10_towardzero":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "clog10_upward":
+double: 4
+float: 3
+idouble: 4
+ifloat: 3
+ildouble: 4
+ldouble: 4
+
+Function: Imaginary part of "clog10_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "clog_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "clog_downward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "clog_towardzero":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "clog_towardzero":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "clog_upward":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "clog_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
 Function: "cos":
 float: 1
 ifloat: 1
@@ -353,6 +921,54 @@  Function: Imaginary part of "csin":
 ildouble: 1
 ldouble: 1
 
+Function: Real part of "csin_downward":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "csin_downward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "csin_towardzero":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "csin_towardzero":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "csin_upward":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "csin_upward":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
 Function: Real part of "csinh":
 float: 1
 ifloat: 1
@@ -367,6 +983,54 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: Real part of "csinh_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "csinh_downward":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "csinh_towardzero":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "csinh_towardzero":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
+Function: Real part of "csinh_upward":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "csinh_upward":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
 Function: Real part of "csqrt":
 double: 1
 float: 1
@@ -383,6 +1047,54 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: Real part of "csqrt_downward":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "csqrt_downward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "csqrt_towardzero":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Imaginary part of "csqrt_towardzero":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: Real part of "csqrt_upward":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+ildouble: 3
+ldouble: 3
+
+Function: Imaginary part of "csqrt_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
 Function: Real part of "ctan":
 double: 1
 float: 1
@@ -543,9 +1255,27 @@  ifloat: 3
 ildouble: 5
 ldouble: 5
 
-Function: "erf":
-double: 1
-idouble: 1
+Function: "erf":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+
+Function: "erf_downward":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "erf_towardzero":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "erf_upward":
+float: 1
+ifloat: 1
 ildouble: 1
 ldouble: 1
 
@@ -557,6 +1287,30 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "erfc_downward":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
+Function: "erfc_towardzero":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
+Function: "erfc_upward":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
 Function: "exp10":
 double: 1
 idouble: 1
@@ -655,12 +1409,54 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "gamma_downward":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "gamma_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "gamma_upward":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
 Function: "hypot":
 double: 1
 idouble: 1
 ildouble: 1
 ldouble: 1
 
+Function: "hypot_downward":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+
+Function: "hypot_towardzero":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+
+Function: "hypot_upward":
+double: 1
+idouble: 1
+ildouble: 1
+ldouble: 1
+
 Function: "j0":
 double: 2
 float: 2
@@ -669,6 +1465,30 @@  ifloat: 2
 ildouble: 2
 ldouble: 2
 
+Function: "j0_downward":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+ildouble: 4
+ldouble: 4
+
+Function: "j0_towardzero":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: "j0_upward":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+ildouble: 5
+ldouble: 5
+
 Function: "j1":
 double: 1
 float: 2
@@ -677,6 +1497,30 @@  ifloat: 2
 ildouble: 4
 ldouble: 4
 
+Function: "j1_downward":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+ildouble: 4
+ldouble: 4
+
+Function: "j1_towardzero":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+ildouble: 4
+ldouble: 4
+
+Function: "j1_upward":
+double: 3
+float: 5
+idouble: 3
+ifloat: 5
+ildouble: 3
+ldouble: 3
+
 Function: "jn":
 double: 4
 float: 4
@@ -693,6 +1537,30 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "lgamma_downward":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "lgamma_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
+Function: "lgamma_upward":
+double: 1
+float: 3
+idouble: 1
+ifloat: 3
+ildouble: 2
+ldouble: 2
+
 Function: "log":
 float: 1
 ifloat: 1
@@ -713,10 +1581,44 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "log1p_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "log1p_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "log1p_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
 Function: "log2":
 ildouble: 1
 ldouble: 1
 
+Function: "log_downward":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "log_upward":
+float: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
 Function: "pow":
 float: 1
 ifloat: 1
@@ -729,6 +1631,26 @@  idouble: 1
 ildouble: 1
 ldouble: 1
 
+Function: "pow10_downward":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+
+Function: "pow10_towardzero":
+double: 1
+idouble: 1
+ildouble: 2
+ldouble: 2
+
+Function: "pow10_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
 Function: "pow_downward":
 float: 1
 ifloat: 1
@@ -791,6 +1713,30 @@  ifloat: 1
 ildouble: 1
 ldouble: 1
 
+Function: "sincos_downward":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+ildouble: 2
+ldouble: 2
+
+Function: "sincos_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "sincos_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 2
+ldouble: 2
+
 Function: "sinh_downward":
 double: 1
 idouble: 1
@@ -847,6 +1793,30 @@  Function: "tanh":
 ildouble: 1
 ldouble: 1
 
+Function: "tanh_downward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "tanh_towardzero":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
+Function: "tanh_upward":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+ildouble: 1
+ldouble: 1
+
 Function: "tgamma":
 double: 4
 float: 3
@@ -863,6 +1833,30 @@  ifloat: 1
 ildouble: 3
 ldouble: 3
 
+Function: "y0_downward":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+ildouble: 4
+ldouble: 4
+
+Function: "y0_towardzero":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 3
+ldouble: 3
+
+Function: "y0_upward":
+double: 3
+float: 4
+idouble: 3
+ifloat: 4
+ildouble: 3
+ldouble: 3
+
 Function: "y1":
 double: 3
 float: 2
@@ -871,12 +1865,36 @@  ifloat: 2
 ildouble: 2
 ldouble: 2
 
+Function: "y1_downward":
+double: 3
+float: 7
+idouble: 3
+ifloat: 7
+ildouble: 4
+ldouble: 4
+
+Function: "y1_towardzero":
+double: 3
+float: 3
+idouble: 3
+ifloat: 3
+ildouble: 6
+ldouble: 6
+
+Function: "y1_upward":
+double: 7
+float: 5
+idouble: 7
+ifloat: 5
+ildouble: 5
+ldouble: 5
+
 Function: "yn":
 double: 3
 float: 2
 idouble: 3
 ifloat: 2
-ildouble: 4
-ldouble: 4
+ildouble: 5
+ldouble: 5
 
 # end of automatic generation