summaryrefslogtreecommitdiff
path: root/math
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2025-10-10 14:35:10 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2025-10-14 11:12:08 -0300
commit850d93f514ebc3c8b62603e70586edd38a18f46b (patch)
tree4c8b83a020bf8a4e147f4e9be2c8a8f41214d28e /math
parent6610a293b3a1a868448612d981a7f2e9721e32c0 (diff)
math: Use binary search on lgammaf slow path
And remove some unused entries of the fallback table. Checked on x86_64-linux-gnu and aarch64-linux-gnu. Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
Diffstat (limited to 'math')
-rw-r--r--math/auto-libm-test-in3
-rw-r--r--math/auto-libm-test-out-lgamma75
2 files changed, 78 insertions, 0 deletions
diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in
index 03f6fee1f0..1397d317fb 100644
--- a/math/auto-libm-test-in
+++ b/math/auto-libm-test-in
@@ -6933,6 +6933,9 @@ lgamma 0x1p-16494
lgamma -0x1p-16494
# the next value generates larger error bounds on x86_64 (binary32)
lgamma -0x3.ec4298p+0
+lgamma 0x1.ecf3fep-73
+lgamma 0x1.58ace8p+112
+lgamma -0x1.efc2a2p+14
# Values +/- 10ulp from overflow threshold. (Values very close to
# overflow threshold produce results very close of that threshold,
diff --git a/math/auto-libm-test-out-lgamma b/math/auto-libm-test-out-lgamma
index 36665b8560..d27c186639 100644
--- a/math/auto-libm-test-out-lgamma
+++ b/math/auto-libm-test-out-lgamma
@@ -2226,6 +2226,81 @@ lgamma -0x3.ec4298p+0
= lgamma tonearest ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok
= lgamma towardzero ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok
= lgamma upward ibm128 -0x3.ec4298p+0 : -0x7.d809ecd340fc16da6722ad1166p-4 1 : inexact-ok
+lgamma 0x1.ecf3fep-73
+= lgamma downward binary32 0xf.679ffp-76 : 0x3.1f1cbp+4 1 : inexact-ok
+= lgamma tonearest binary32 0xf.679ffp-76 : 0x3.1f1cb4p+4 1 : inexact-ok
+= lgamma towardzero binary32 0xf.679ffp-76 : 0x3.1f1cbp+4 1 : inexact-ok
+= lgamma upward binary32 0xf.679ffp-76 : 0x3.1f1cb4p+4 1 : inexact-ok
+= lgamma downward binary64 0xf.679ffp-76 : 0x3.1f1cb3ffffffep+4 1 : inexact-ok
+= lgamma tonearest binary64 0xf.679ffp-76 : 0x3.1f1cb4p+4 1 : inexact-ok
+= lgamma towardzero binary64 0xf.679ffp-76 : 0x3.1f1cb3ffffffep+4 1 : inexact-ok
+= lgamma upward binary64 0xf.679ffp-76 : 0x3.1f1cb4p+4 1 : inexact-ok
+= lgamma downward intel96 0xf.679ffp-76 : 0x3.1f1cb3fffffff08cp+4 1 : inexact-ok
+= lgamma tonearest intel96 0xf.679ffp-76 : 0x3.1f1cb3fffffff08cp+4 1 : inexact-ok
+= lgamma towardzero intel96 0xf.679ffp-76 : 0x3.1f1cb3fffffff08cp+4 1 : inexact-ok
+= lgamma upward intel96 0xf.679ffp-76 : 0x3.1f1cb3fffffff09p+4 1 : inexact-ok
+= lgamma downward m68k96 0xf.679ffp-76 : 0x3.1f1cb3fffffff08cp+4 1 : inexact-ok
+= lgamma tonearest m68k96 0xf.679ffp-76 : 0x3.1f1cb3fffffff08cp+4 1 : inexact-ok
+= lgamma towardzero m68k96 0xf.679ffp-76 : 0x3.1f1cb3fffffff08cp+4 1 : inexact-ok
+= lgamma upward m68k96 0xf.679ffp-76 : 0x3.1f1cb3fffffff09p+4 1 : inexact-ok
+= lgamma downward binary128 0xf.679ffp-76 : 0x3.1f1cb3fffffff08c0c4788f0c8a8p+4 1 : inexact-ok
+= lgamma tonearest binary128 0xf.679ffp-76 : 0x3.1f1cb3fffffff08c0c4788f0c8a8p+4 1 : inexact-ok
+= lgamma towardzero binary128 0xf.679ffp-76 : 0x3.1f1cb3fffffff08c0c4788f0c8a8p+4 1 : inexact-ok
+= lgamma upward binary128 0xf.679ffp-76 : 0x3.1f1cb3fffffff08c0c4788f0c8aap+4 1 : inexact-ok
+= lgamma downward ibm128 0xf.679ffp-76 : 0x3.1f1cb3fffffff08c0c4788f0c8p+4 1 : inexact-ok
+= lgamma tonearest ibm128 0xf.679ffp-76 : 0x3.1f1cb3fffffff08c0c4788f0c9p+4 1 : inexact-ok
+= lgamma towardzero ibm128 0xf.679ffp-76 : 0x3.1f1cb3fffffff08c0c4788f0c8p+4 1 : inexact-ok
+= lgamma upward ibm128 0xf.679ffp-76 : 0x3.1f1cb3fffffff08c0c4788f0c9p+4 1 : inexact-ok
+lgamma 0x1.58ace8p+112
+= lgamma downward binary32 0x1.58ace8p+112 : 0x6.793d9p+116 1 : inexact-ok
+= lgamma tonearest binary32 0x1.58ace8p+112 : 0x6.793d98p+116 1 : inexact-ok
+= lgamma towardzero binary32 0x1.58ace8p+112 : 0x6.793d9p+116 1 : inexact-ok
+= lgamma upward binary32 0x1.58ace8p+112 : 0x6.793d98p+116 1 : inexact-ok
+= lgamma downward binary64 0x1.58ace8p+112 : 0x6.793d94p+116 1 : inexact-ok
+= lgamma tonearest binary64 0x1.58ace8p+112 : 0x6.793d940000004p+116 1 : inexact-ok
+= lgamma towardzero binary64 0x1.58ace8p+112 : 0x6.793d94p+116 1 : inexact-ok
+= lgamma upward binary64 0x1.58ace8p+112 : 0x6.793d940000004p+116 1 : inexact-ok
+= lgamma downward intel96 0x1.58ace8p+112 : 0x6.793d940000003d2p+116 1 : inexact-ok
+= lgamma tonearest intel96 0x1.58ace8p+112 : 0x6.793d940000003d28p+116 1 : inexact-ok
+= lgamma towardzero intel96 0x1.58ace8p+112 : 0x6.793d940000003d2p+116 1 : inexact-ok
+= lgamma upward intel96 0x1.58ace8p+112 : 0x6.793d940000003d28p+116 1 : inexact-ok
+= lgamma downward m68k96 0x1.58ace8p+112 : 0x6.793d940000003d2p+116 1 : inexact-ok
+= lgamma tonearest m68k96 0x1.58ace8p+112 : 0x6.793d940000003d28p+116 1 : inexact-ok
+= lgamma towardzero m68k96 0x1.58ace8p+112 : 0x6.793d940000003d2p+116 1 : inexact-ok
+= lgamma upward m68k96 0x1.58ace8p+112 : 0x6.793d940000003d28p+116 1 : inexact-ok
+= lgamma downward binary128 0x1.58ace8p+112 : 0x6.793d940000003d252ede096c3f0cp+116 1 : inexact-ok
+= lgamma tonearest binary128 0x1.58ace8p+112 : 0x6.793d940000003d252ede096c3f0cp+116 1 : inexact-ok
+= lgamma towardzero binary128 0x1.58ace8p+112 : 0x6.793d940000003d252ede096c3f0cp+116 1 : inexact-ok
+= lgamma upward binary128 0x1.58ace8p+112 : 0x6.793d940000003d252ede096c3f1p+116 1 : inexact-ok
+= lgamma downward ibm128 0x1.58ace8p+112 : 0x6.793d940000003d252ede096c3ep+116 1 : inexact-ok
+= lgamma tonearest ibm128 0x1.58ace8p+112 : 0x6.793d940000003d252ede096c4p+116 1 : inexact-ok
+= lgamma towardzero ibm128 0x1.58ace8p+112 : 0x6.793d940000003d252ede096c3ep+116 1 : inexact-ok
+= lgamma upward ibm128 0x1.58ace8p+112 : 0x6.793d940000003d252ede096c4p+116 1 : inexact-ok
+lgamma -0x1.efc2a2p+14
+= lgamma downward binary32 -0x7.bf0a88p+12 : -0x4.88b6f8p+16 -1 : inexact-ok
+= lgamma tonearest binary32 -0x7.bf0a88p+12 : -0x4.88b6fp+16 -1 : inexact-ok
+= lgamma towardzero binary32 -0x7.bf0a88p+12 : -0x4.88b6fp+16 -1 : inexact-ok
+= lgamma upward binary32 -0x7.bf0a88p+12 : -0x4.88b6fp+16 -1 : inexact-ok
+= lgamma downward binary64 -0x7.bf0a88p+12 : -0x4.88b6f00000008p+16 -1 : inexact-ok
+= lgamma tonearest binary64 -0x7.bf0a88p+12 : -0x4.88b6f00000004p+16 -1 : inexact-ok
+= lgamma towardzero binary64 -0x7.bf0a88p+12 : -0x4.88b6f00000004p+16 -1 : inexact-ok
+= lgamma upward binary64 -0x7.bf0a88p+12 : -0x4.88b6f00000004p+16 -1 : inexact-ok
+= lgamma downward intel96 -0x7.bf0a88p+12 : -0x4.88b6f00000005978p+16 -1 : inexact-ok
+= lgamma tonearest intel96 -0x7.bf0a88p+12 : -0x4.88b6f0000000597p+16 -1 : inexact-ok
+= lgamma towardzero intel96 -0x7.bf0a88p+12 : -0x4.88b6f0000000597p+16 -1 : inexact-ok
+= lgamma upward intel96 -0x7.bf0a88p+12 : -0x4.88b6f0000000597p+16 -1 : inexact-ok
+= lgamma downward m68k96 -0x7.bf0a88p+12 : -0x4.88b6f00000005978p+16 -1 : inexact-ok
+= lgamma tonearest m68k96 -0x7.bf0a88p+12 : -0x4.88b6f0000000597p+16 -1 : inexact-ok
+= lgamma towardzero m68k96 -0x7.bf0a88p+12 : -0x4.88b6f0000000597p+16 -1 : inexact-ok
+= lgamma upward m68k96 -0x7.bf0a88p+12 : -0x4.88b6f0000000597p+16 -1 : inexact-ok
+= lgamma downward binary128 -0x7.bf0a88p+12 : -0x4.88b6f00000005971e29c3b8dd834p+16 -1 : inexact-ok
+= lgamma tonearest binary128 -0x7.bf0a88p+12 : -0x4.88b6f00000005971e29c3b8dd834p+16 -1 : inexact-ok
+= lgamma towardzero binary128 -0x7.bf0a88p+12 : -0x4.88b6f00000005971e29c3b8dd83p+16 -1 : inexact-ok
+= lgamma upward binary128 -0x7.bf0a88p+12 : -0x4.88b6f00000005971e29c3b8dd83p+16 -1 : inexact-ok
+= lgamma downward ibm128 -0x7.bf0a88p+12 : -0x4.88b6f00000005971e29c3b8ddap+16 -1 : inexact-ok
+= lgamma tonearest ibm128 -0x7.bf0a88p+12 : -0x4.88b6f00000005971e29c3b8dd8p+16 -1 : inexact-ok
+= lgamma towardzero ibm128 -0x7.bf0a88p+12 : -0x4.88b6f00000005971e29c3b8dd8p+16 -1 : inexact-ok
+= lgamma upward ibm128 -0x7.bf0a88p+12 : -0x4.88b6f00000005971e29c3b8dd8p+16 -1 : inexact-ok
lgamma 0x3.12be0cp+120
= lgamma downward binary32 0x3.12be0cp+120 : 0xf.ffff1p+124 1 : inexact-ok
= lgamma tonearest binary32 0x3.12be0cp+120 : 0xf.ffff1p+124 1 : inexact-ok