From: Adhemerval Zanella Date: Mon, 10 Nov 2025 11:44:14 +0000 (-0300) Subject: math: Sync acosh from CORE-MATH X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b983c854e6d7198d4114ef8303819a7755f8b6d1;p=thirdparty%2Fglibc.git math: Sync acosh from CORE-MATH The c9abdf80 fix handle some cases for RNDZ. Checked on x86_64-linux-gnu. --- diff --git a/SHARED-FILES b/SHARED-FILES index be87ad12b0..d7e3c6ee5a 100644 --- a/SHARED-FILES +++ b/SHARED-FILES @@ -242,7 +242,7 @@ tzdata: core-math: # src/binary64/acosh/acosh.c, revision 69062c4d sysdeps/ieee754/dbl-64/e_acosh.c - # src/binary64/atanh/atanh.c, revision 4da7f241 + # src/binary64/atanh/atanh.c, revision c9abdf80 sysdeps/ieee754/dbl-64/e_atanh.c # src/binary64/tgamma/tgamma.c, revision 0f185e23 sysdeps/ieee754/dbl-64/e_gamma_r.c diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index f0888b3c9b..10e7d11850 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -219,6 +219,7 @@ acosh 0x1.1b836p+0 acosh 0x1.07c956p+0 acosh 0x1.1808eep+0 acosh 0x1.1052c4p+0 +acosh 0x1.0800751d9facbp+0 # the next value generates larger error bounds on x86_64 (ldbl-96) acosh 0x1.1ecbdf374bce01cap+0 # the next value generates larger error bounds on x86_64 (binary128) diff --git a/math/auto-libm-test-out-acosh b/math/auto-libm-test-out-acosh index a628fa33ba..8cdaddd84f 100644 --- a/math/auto-libm-test-out-acosh +++ b/math/auto-libm-test-out-acosh @@ -1898,6 +1898,75 @@ 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.0800751d9facbp+0 += acosh downward binary32 0x1.080076p+0 : 0x3.fd775cp-4 : inexact-ok += acosh tonearest binary32 0x1.080076p+0 : 0x3.fd775cp-4 : inexact-ok += acosh towardzero binary32 0x1.080076p+0 : 0x3.fd775cp-4 : inexact-ok += acosh upward binary32 0x1.080076p+0 : 0x3.fd776p-4 : inexact-ok += acosh downward binary64 0x1.080076p+0 : 0x3.fd775c1450336p-4 : inexact-ok += acosh tonearest binary64 0x1.080076p+0 : 0x3.fd775c1450336p-4 : inexact-ok += acosh towardzero binary64 0x1.080076p+0 : 0x3.fd775c1450336p-4 : inexact-ok += acosh upward binary64 0x1.080076p+0 : 0x3.fd775c1450338p-4 : inexact-ok += acosh downward intel96 0x1.080076p+0 : 0x3.fd775c14503365e8p-4 : inexact-ok += acosh tonearest intel96 0x1.080076p+0 : 0x3.fd775c14503365ecp-4 : inexact-ok += acosh towardzero intel96 0x1.080076p+0 : 0x3.fd775c14503365e8p-4 : inexact-ok += acosh upward intel96 0x1.080076p+0 : 0x3.fd775c14503365ecp-4 : inexact-ok += acosh downward m68k96 0x1.080076p+0 : 0x3.fd775c14503365e8p-4 : inexact-ok += acosh tonearest m68k96 0x1.080076p+0 : 0x3.fd775c14503365ecp-4 : inexact-ok += acosh towardzero m68k96 0x1.080076p+0 : 0x3.fd775c14503365e8p-4 : inexact-ok += acosh upward m68k96 0x1.080076p+0 : 0x3.fd775c14503365ecp-4 : inexact-ok += acosh downward binary128 0x1.080076p+0 : 0x3.fd775c14503365ead1d5533be438p-4 : inexact-ok += acosh tonearest binary128 0x1.080076p+0 : 0x3.fd775c14503365ead1d5533be438p-4 : inexact-ok += acosh towardzero binary128 0x1.080076p+0 : 0x3.fd775c14503365ead1d5533be438p-4 : inexact-ok += acosh upward binary128 0x1.080076p+0 : 0x3.fd775c14503365ead1d5533be43ap-4 : inexact-ok += acosh downward ibm128 0x1.080076p+0 : 0x3.fd775c14503365ead1d5533be4p-4 : inexact-ok += acosh tonearest ibm128 0x1.080076p+0 : 0x3.fd775c14503365ead1d5533be4p-4 : inexact-ok += acosh towardzero ibm128 0x1.080076p+0 : 0x3.fd775c14503365ead1d5533be4p-4 : inexact-ok += acosh upward ibm128 0x1.080076p+0 : 0x3.fd775c14503365ead1d5533be5p-4 : inexact-ok += acosh downward binary32 0x1.080074p+0 : 0x3.fd76dcp-4 : inexact-ok += acosh tonearest binary32 0x1.080074p+0 : 0x3.fd76dcp-4 : inexact-ok += acosh towardzero binary32 0x1.080074p+0 : 0x3.fd76dcp-4 : inexact-ok += acosh upward binary32 0x1.080074p+0 : 0x3.fd76ep-4 : inexact-ok += acosh downward binary64 0x1.080074p+0 : 0x3.fd76dd1508f84p-4 : inexact-ok += acosh tonearest binary64 0x1.080074p+0 : 0x3.fd76dd1508f84p-4 : inexact-ok += acosh towardzero binary64 0x1.080074p+0 : 0x3.fd76dd1508f84p-4 : inexact-ok += acosh upward binary64 0x1.080074p+0 : 0x3.fd76dd1508f86p-4 : inexact-ok += acosh downward intel96 0x1.080074p+0 : 0x3.fd76dd1508f8442cp-4 : inexact-ok += acosh tonearest intel96 0x1.080074p+0 : 0x3.fd76dd1508f8443p-4 : inexact-ok += acosh towardzero intel96 0x1.080074p+0 : 0x3.fd76dd1508f8442cp-4 : inexact-ok += acosh upward intel96 0x1.080074p+0 : 0x3.fd76dd1508f8443p-4 : inexact-ok += acosh downward m68k96 0x1.080074p+0 : 0x3.fd76dd1508f8442cp-4 : inexact-ok += acosh tonearest m68k96 0x1.080074p+0 : 0x3.fd76dd1508f8443p-4 : inexact-ok += acosh towardzero m68k96 0x1.080074p+0 : 0x3.fd76dd1508f8442cp-4 : inexact-ok += acosh upward m68k96 0x1.080074p+0 : 0x3.fd76dd1508f8443p-4 : inexact-ok += acosh downward binary128 0x1.080074p+0 : 0x3.fd76dd1508f8442f10798fe9876cp-4 : inexact-ok += acosh tonearest binary128 0x1.080074p+0 : 0x3.fd76dd1508f8442f10798fe9876cp-4 : inexact-ok += acosh towardzero binary128 0x1.080074p+0 : 0x3.fd76dd1508f8442f10798fe9876cp-4 : inexact-ok += acosh upward binary128 0x1.080074p+0 : 0x3.fd76dd1508f8442f10798fe9876ep-4 : inexact-ok += acosh downward ibm128 0x1.080074p+0 : 0x3.fd76dd1508f8442f10798fe987p-4 : inexact-ok += acosh tonearest ibm128 0x1.080074p+0 : 0x3.fd76dd1508f8442f10798fe987p-4 : inexact-ok += acosh towardzero ibm128 0x1.080074p+0 : 0x3.fd76dd1508f8442f10798fe987p-4 : inexact-ok += acosh upward ibm128 0x1.080074p+0 : 0x3.fd76dd1508f8442f10798fe988p-4 : inexact-ok += acosh downward binary64 0x1.0800751d9facbp+0 : 0x3.fd7723edbf376p-4 : inexact-ok += acosh tonearest binary64 0x1.0800751d9facbp+0 : 0x3.fd7723edbf378p-4 : inexact-ok += acosh towardzero binary64 0x1.0800751d9facbp+0 : 0x3.fd7723edbf376p-4 : inexact-ok += acosh upward binary64 0x1.0800751d9facbp+0 : 0x3.fd7723edbf378p-4 : inexact-ok += acosh downward intel96 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffcp-4 : inexact-ok += acosh tonearest intel96 0x1.0800751d9facbp+0 : 0x3.fd7723edbf378p-4 : inexact-ok += acosh towardzero intel96 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffcp-4 : inexact-ok += acosh upward intel96 0x1.0800751d9facbp+0 : 0x3.fd7723edbf378p-4 : inexact-ok += acosh downward m68k96 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffcp-4 : inexact-ok += acosh tonearest m68k96 0x1.0800751d9facbp+0 : 0x3.fd7723edbf378p-4 : inexact-ok += acosh towardzero m68k96 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffcp-4 : inexact-ok += acosh upward m68k96 0x1.0800751d9facbp+0 : 0x3.fd7723edbf378p-4 : inexact-ok += acosh downward binary128 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffec0d3568a9c9p-4 : inexact-ok += acosh tonearest binary128 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffec0d3568a9c92p-4 : inexact-ok += acosh towardzero binary128 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffec0d3568a9c9p-4 : inexact-ok += acosh upward binary128 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffec0d3568a9c92p-4 : inexact-ok += acosh downward ibm128 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffec0d3568a9cp-4 : inexact-ok += acosh tonearest ibm128 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffec0d3568a9dp-4 : inexact-ok += acosh towardzero ibm128 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffec0d3568a9cp-4 : inexact-ok += acosh upward ibm128 0x1.0800751d9facbp+0 : 0x3.fd7723edbf377ffec0d3568a9dp-4 : inexact-ok acosh 0x1.1ecbdf374bce01cap+0 = acosh downward binary32 0x1.1ecbep+0 : 0x7.c5802p-4 : inexact-ok = acosh tonearest binary32 0x1.1ecbep+0 : 0x7.c5802p-4 : inexact-ok diff --git a/sysdeps/ieee754/dbl-64/e_acosh.c b/sysdeps/ieee754/dbl-64/e_acosh.c index 959d347238..2e3f4235bd 100644 --- a/sysdeps/ieee754/dbl-64/e_acosh.c +++ b/sysdeps/ieee754/dbl-64/e_acosh.c @@ -119,7 +119,7 @@ __ieee754_acosh (double x) + z4 * ((cl[5] + z * cl[6]) + z2 * (cl[7] + z * cl[8])))); - double eps = ds * 0x1.04p-50 - 0x1p-104 * sh; + double eps = ds * 0x1.22p-50 - 0x1p-104 * sh; ds += sl; double lb = sh + (ds - eps), ub = sh + (ds + eps); if (lb == ub)