[PATCH] add more test inputs for asinpi

Paul Zimmermann Paul.Zimmermann@inria.fr
Wed Apr 9 10:42:50 GMT 2025


While trying to replace asin by the CORE-MATH code, which is correctly
rounded, Saban Houssein noticed some errors in asinpi_downward on x86_64:

Failure: Test: asinpi_downward (-0x4p-128)
Result:
 is:         -3.7417147301993140e-39  -0x1.45f306dc9c885p-128
 should be:  -3.7417147301993127e-39  -0x1.45f306dc9c883p-128
 difference:  1.3050608935997049e-54   0x1.0000000000000p-179
 ulp       :  2.0000
 max.ulp   :  1.0000

This is due to the fact that the input tests were too scarce.
---
 math/auto-libm-test-in            |   4 +
 math/auto-libm-test-out-asinpi    | 144 ++++++++++++++++++++++++++++++
 sysdeps/x86_64/fpu/libm-test-ulps |   2 +-
 3 files changed, 149 insertions(+), 1 deletion(-)

diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 01ba689aa8..c340c2ae0f 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -524,6 +524,10 @@ asinpi 0x1.f1c012p-1
 asinpi -0x1.8805060cb885cp-3
 asinpi 0x8.14d7e32b5c44642p-4
 asinpi -0xa.7ca6c96caefe80b9d757de58a578p-4
+asinpi -0x4p-128
+asinpi -0x8p-152
+asinpi -0x8p-972
+asinpi -0xf.fffffp-4
 
 atan inf
 atan -inf
diff --git a/math/auto-libm-test-out-asinpi b/math/auto-libm-test-out-asinpi
index 31fe806411..ec5dc7b095 100644
--- a/math/auto-libm-test-out-asinpi
+++ b/math/auto-libm-test-out-asinpi
@@ -2780,3 +2780,147 @@ asinpi -0xa.7ca6c96caefe80b9d757de58a578p-4
 = asinpi tonearest ibm128 -0xa.7ca6c96caefe80b9d757de58a8p-4 : -0x3.a3e55379cf8d0f73aac00cc2e5p-4 : inexact-ok
 = asinpi towardzero ibm128 -0xa.7ca6c96caefe80b9d757de58a8p-4 : -0x3.a3e55379cf8d0f73aac00cc2e4p-4 : inexact-ok
 = asinpi upward ibm128 -0xa.7ca6c96caefe80b9d757de58a8p-4 : -0x3.a3e55379cf8d0f73aac00cc2e4p-4 : inexact-ok
+asinpi -0x4p-128
+= asinpi downward binary32 -0x4p-128 : -0x1.45f308p-128 : inexact-ok underflow errno-erange-ok
+= asinpi tonearest binary32 -0x4p-128 : -0x1.45f308p-128 : inexact-ok underflow errno-erange-ok
+= asinpi towardzero binary32 -0x4p-128 : -0x1.45f3p-128 : inexact-ok underflow errno-erange-ok
+= asinpi upward binary32 -0x4p-128 : -0x1.45f3p-128 : inexact-ok underflow errno-erange-ok
+= asinpi downward binary64 -0x4p-128 : -0x1.45f306dc9c883p-128 : inexact-ok
+= asinpi tonearest binary64 -0x4p-128 : -0x1.45f306dc9c883p-128 : inexact-ok
+= asinpi towardzero binary64 -0x4p-128 : -0x1.45f306dc9c882p-128 : inexact-ok
+= asinpi upward binary64 -0x4p-128 : -0x1.45f306dc9c882p-128 : inexact-ok
+= asinpi downward intel96 -0x4p-128 : -0x1.45f306dc9c882a54p-128 : inexact-ok
+= asinpi tonearest intel96 -0x4p-128 : -0x1.45f306dc9c882a54p-128 : inexact-ok
+= asinpi towardzero intel96 -0x4p-128 : -0x1.45f306dc9c882a52p-128 : inexact-ok
+= asinpi upward intel96 -0x4p-128 : -0x1.45f306dc9c882a52p-128 : inexact-ok
+= asinpi downward m68k96 -0x4p-128 : -0x1.45f306dc9c882a54p-128 : inexact-ok
+= asinpi tonearest m68k96 -0x4p-128 : -0x1.45f306dc9c882a54p-128 : inexact-ok
+= asinpi towardzero m68k96 -0x4p-128 : -0x1.45f306dc9c882a52p-128 : inexact-ok
+= asinpi upward m68k96 -0x4p-128 : -0x1.45f306dc9c882a52p-128 : inexact-ok
+= asinpi downward binary128 -0x4p-128 : -0x1.45f306dc9c882a53f84eafa3ea6ap-128 : inexact-ok
+= asinpi tonearest binary128 -0x4p-128 : -0x1.45f306dc9c882a53f84eafa3ea6ap-128 : inexact-ok
+= asinpi towardzero binary128 -0x4p-128 : -0x1.45f306dc9c882a53f84eafa3ea69p-128 : inexact-ok
+= asinpi upward binary128 -0x4p-128 : -0x1.45f306dc9c882a53f84eafa3ea69p-128 : inexact-ok
+= asinpi downward ibm128 -0x4p-128 : -0x1.45f306dc9c882a53f84eafa3ea8p-128 : inexact-ok
+= asinpi tonearest ibm128 -0x4p-128 : -0x1.45f306dc9c882a53f84eafa3ea8p-128 : inexact-ok
+= asinpi towardzero ibm128 -0x4p-128 : -0x1.45f306dc9c882a53f84eafa3eap-128 : inexact-ok
+= asinpi upward ibm128 -0x4p-128 : -0x1.45f306dc9c882a53f84eafa3eap-128 : inexact-ok
+asinpi -0x8p-152
+= asinpi downward binary32 -0x8p-152 : -0x8p-152 : inexact-ok underflow errno-erange-ok
+= asinpi tonearest binary32 -0x8p-152 : -0x0p+0 : inexact-ok underflow errno-erange
+= asinpi towardzero binary32 -0x8p-152 : -0x0p+0 : inexact-ok underflow errno-erange
+= asinpi upward binary32 -0x8p-152 : -0x0p+0 : inexact-ok underflow errno-erange
+= asinpi downward binary64 -0x8p-152 : -0x2.8be60db939106p-152 : inexact-ok
+= asinpi tonearest binary64 -0x8p-152 : -0x2.8be60db939106p-152 : inexact-ok
+= asinpi towardzero binary64 -0x8p-152 : -0x2.8be60db939104p-152 : inexact-ok
+= asinpi upward binary64 -0x8p-152 : -0x2.8be60db939104p-152 : inexact-ok
+= asinpi downward intel96 -0x8p-152 : -0x2.8be60db9391054a8p-152 : inexact-ok
+= asinpi tonearest intel96 -0x8p-152 : -0x2.8be60db9391054a8p-152 : inexact-ok
+= asinpi towardzero intel96 -0x8p-152 : -0x2.8be60db9391054a4p-152 : inexact-ok
+= asinpi upward intel96 -0x8p-152 : -0x2.8be60db9391054a4p-152 : inexact-ok
+= asinpi downward m68k96 -0x8p-152 : -0x2.8be60db9391054a8p-152 : inexact-ok
+= asinpi tonearest m68k96 -0x8p-152 : -0x2.8be60db9391054a8p-152 : inexact-ok
+= asinpi towardzero m68k96 -0x8p-152 : -0x2.8be60db9391054a4p-152 : inexact-ok
+= asinpi upward m68k96 -0x8p-152 : -0x2.8be60db9391054a4p-152 : inexact-ok
+= asinpi downward binary128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4d4p-152 : inexact-ok
+= asinpi tonearest binary128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4d4p-152 : inexact-ok
+= asinpi towardzero binary128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4d2p-152 : inexact-ok
+= asinpi upward binary128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4d2p-152 : inexact-ok
+= asinpi downward ibm128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d5p-152 : inexact-ok
+= asinpi tonearest ibm128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d5p-152 : inexact-ok
+= asinpi towardzero ibm128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4p-152 : inexact-ok
+= asinpi upward ibm128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4p-152 : inexact-ok
+asinpi -0x8p-972
+= asinpi downward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi tonearest binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi towardzero binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi upward binary32 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi downward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi tonearest binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi towardzero binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi upward binary64 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi downward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi tonearest intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi towardzero intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi upward intel96 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi downward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi tonearest m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi towardzero m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi upward m68k96 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi downward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi tonearest binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi towardzero binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi upward binary128 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi downward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi tonearest ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi towardzero ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi upward ibm128 -0x0p+0 : -0x0p+0 : inexact-ok
+= asinpi downward binary32 -0x8p-152 : -0x8p-152 : inexact-ok underflow errno-erange-ok
+= asinpi tonearest binary32 -0x8p-152 : -0x0p+0 : inexact-ok underflow errno-erange
+= asinpi towardzero binary32 -0x8p-152 : -0x0p+0 : inexact-ok underflow errno-erange
+= asinpi upward binary32 -0x8p-152 : -0x0p+0 : inexact-ok underflow errno-erange
+= asinpi downward binary64 -0x8p-152 : -0x2.8be60db939106p-152 : inexact-ok
+= asinpi tonearest binary64 -0x8p-152 : -0x2.8be60db939106p-152 : inexact-ok
+= asinpi towardzero binary64 -0x8p-152 : -0x2.8be60db939104p-152 : inexact-ok
+= asinpi upward binary64 -0x8p-152 : -0x2.8be60db939104p-152 : inexact-ok
+= asinpi downward intel96 -0x8p-152 : -0x2.8be60db9391054a8p-152 : inexact-ok
+= asinpi tonearest intel96 -0x8p-152 : -0x2.8be60db9391054a8p-152 : inexact-ok
+= asinpi towardzero intel96 -0x8p-152 : -0x2.8be60db9391054a4p-152 : inexact-ok
+= asinpi upward intel96 -0x8p-152 : -0x2.8be60db9391054a4p-152 : inexact-ok
+= asinpi downward m68k96 -0x8p-152 : -0x2.8be60db9391054a8p-152 : inexact-ok
+= asinpi tonearest m68k96 -0x8p-152 : -0x2.8be60db9391054a8p-152 : inexact-ok
+= asinpi towardzero m68k96 -0x8p-152 : -0x2.8be60db9391054a4p-152 : inexact-ok
+= asinpi upward m68k96 -0x8p-152 : -0x2.8be60db9391054a4p-152 : inexact-ok
+= asinpi downward binary128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4d4p-152 : inexact-ok
+= asinpi tonearest binary128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4d4p-152 : inexact-ok
+= asinpi towardzero binary128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4d2p-152 : inexact-ok
+= asinpi upward binary128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4d2p-152 : inexact-ok
+= asinpi downward ibm128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d5p-152 : inexact-ok
+= asinpi tonearest ibm128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d5p-152 : inexact-ok
+= asinpi towardzero ibm128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4p-152 : inexact-ok
+= asinpi upward ibm128 -0x8p-152 : -0x2.8be60db9391054a7f09d5f47d4p-152 : inexact-ok
+= asinpi downward binary64 -0x8p-972 : -0x2.8be60db939106p-972 : inexact-ok
+= asinpi tonearest binary64 -0x8p-972 : -0x2.8be60db939106p-972 : inexact-ok
+= asinpi towardzero binary64 -0x8p-972 : -0x2.8be60db939104p-972 : inexact-ok
+= asinpi upward binary64 -0x8p-972 : -0x2.8be60db939104p-972 : inexact-ok
+= asinpi downward intel96 -0x8p-972 : -0x2.8be60db9391054a8p-972 : inexact-ok
+= asinpi tonearest intel96 -0x8p-972 : -0x2.8be60db9391054a8p-972 : inexact-ok
+= asinpi towardzero intel96 -0x8p-972 : -0x2.8be60db9391054a4p-972 : inexact-ok
+= asinpi upward intel96 -0x8p-972 : -0x2.8be60db9391054a4p-972 : inexact-ok
+= asinpi downward m68k96 -0x8p-972 : -0x2.8be60db9391054a8p-972 : inexact-ok
+= asinpi tonearest m68k96 -0x8p-972 : -0x2.8be60db9391054a8p-972 : inexact-ok
+= asinpi towardzero m68k96 -0x8p-972 : -0x2.8be60db9391054a4p-972 : inexact-ok
+= asinpi upward m68k96 -0x8p-972 : -0x2.8be60db9391054a4p-972 : inexact-ok
+= asinpi downward binary128 -0x8p-972 : -0x2.8be60db9391054a7f09d5f47d4d4p-972 : inexact-ok
+= asinpi tonearest binary128 -0x8p-972 : -0x2.8be60db9391054a7f09d5f47d4d4p-972 : inexact-ok
+= asinpi towardzero binary128 -0x8p-972 : -0x2.8be60db9391054a7f09d5f47d4d2p-972 : inexact-ok
+= asinpi upward binary128 -0x8p-972 : -0x2.8be60db9391054a7f09d5f47d4d2p-972 : inexact-ok
+= asinpi downward ibm128 -0x8p-972 : -0x2.8be60db9391054a7f09d5f47d8p-972 : inexact-ok underflow errno-erange-ok
+= asinpi tonearest ibm128 -0x8p-972 : -0x2.8be60db9391054a7f09d5f47d4p-972 : inexact-ok underflow errno-erange-ok
+= asinpi towardzero ibm128 -0x8p-972 : -0x2.8be60db9391054a7f09d5f47d4p-972 : inexact-ok underflow errno-erange-ok
+= asinpi upward ibm128 -0x8p-972 : -0x2.8be60db9391054a7f09d5f47d4p-972 : inexact-ok underflow errno-erange-ok
+asinpi -0xf.fffffp-4
+= asinpi downward binary32 -0xf.fffffp-4 : -0x7.ff8cc8p-4 : inexact-ok
+= asinpi tonearest binary32 -0xf.fffffp-4 : -0x7.ff8ccp-4 : inexact-ok
+= asinpi towardzero binary32 -0xf.fffffp-4 : -0x7.ff8ccp-4 : inexact-ok
+= asinpi upward binary32 -0xf.fffffp-4 : -0x7.ff8ccp-4 : inexact-ok
+= asinpi downward binary64 -0xf.fffffp-4 : -0x7.ff8cc26f4f6cp-4 : inexact-ok
+= asinpi tonearest binary64 -0xf.fffffp-4 : -0x7.ff8cc26f4f6cp-4 : inexact-ok
+= asinpi towardzero binary64 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bcp-4 : inexact-ok
+= asinpi upward binary64 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bcp-4 : inexact-ok
+= asinpi downward intel96 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0c8p-4 : inexact-ok
+= asinpi tonearest intel96 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0cp-4 : inexact-ok
+= asinpi towardzero intel96 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0cp-4 : inexact-ok
+= asinpi upward intel96 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0cp-4 : inexact-ok
+= asinpi downward m68k96 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0c8p-4 : inexact-ok
+= asinpi tonearest m68k96 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0cp-4 : inexact-ok
+= asinpi towardzero m68k96 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0cp-4 : inexact-ok
+= asinpi upward m68k96 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0cp-4 : inexact-ok
+= asinpi downward binary128 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0c0c2d37013f084p-4 : inexact-ok
+= asinpi tonearest binary128 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0c0c2d37013f084p-4 : inexact-ok
+= asinpi towardzero binary128 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0c0c2d37013f08p-4 : inexact-ok
+= asinpi upward binary128 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0c0c2d37013f08p-4 : inexact-ok
+= asinpi downward ibm128 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0c0c2d37013f2p-4 : inexact-ok
+= asinpi tonearest ibm128 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0c0c2d37013fp-4 : inexact-ok
+= asinpi towardzero ibm128 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0c0c2d37013fp-4 : inexact-ok
+= asinpi upward ibm128 -0xf.fffffp-4 : -0x7.ff8cc26f4f6bf0c0c2d37013fp-4 : inexact-ok
diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps
index e454a63eea..1cea051300 100644
--- a/sysdeps/x86_64/fpu/libm-test-ulps
+++ b/sysdeps/x86_64/fpu/libm-test-ulps
@@ -189,7 +189,7 @@ float128: 2
 ldouble: 2
 
 Function: "asinpi_downward":
-double: 1
+double: 2
 float: 1
 float128: 2
 ldouble: 2
-- 
2.47.2



More information about the Libc-alpha mailing list