mirror of
https://sourceware.org/git/glibc.git
synced 2025-12-20 01:12:17 +08:00
math: Sync acosh from CORE-MATH
The CORE-MATH commit 6736002f fixes some issues for RNDZ: Failure: Test: acosh_towardzero (0x1.08000c1e79fp+0) Result: is: 2.4935636091994373e-01 0x1.feae8c399b18cp-3 should be: 2.4935636091994370e-01 0x1.feae8c399b18bp-3 difference: 2.7755575615628913e-17 0x1.0000000000000p-55 ulp : 1.0000 max.ulp : 0.0000 Failure: Test: acosh_towardzero (0x1.080016353964ep+0) Result: is: 2.4935874767710369e-01 0x1.feafcc91f518ep-3 should be: 2.4935874767710367e-01 0x1.feafcc91f518dp-3 difference: 2.7755575615628913e-17 0x1.0000000000000p-55 ulp : 1.0000 max.ulp : 0.0000 Maximal error of `acosh_towardzero' is : 1 ulp accepted: 0 ulp This only happens when the ISA supports fma, such as x86_64-v3, aarch64, or powerpc. Checked on x86_64-linux-gnu, x86_64-linux-gnu-v3, aarch64-linux-gnu, and i686-linux-gnu.
This commit is contained in:
@@ -244,7 +244,7 @@ tzdata:
|
||||
# The project is distribute here:
|
||||
# https://gitlab.inria.fr/core-math/core-math/
|
||||
core-math:
|
||||
# src/binary64/acosh/acosh.c, revision 69062c4d
|
||||
# src/binary64/acosh/acosh.c, revision 6736002f
|
||||
sysdeps/ieee754/dbl-64/e_acosh.c
|
||||
# src/binary64/atanh/atanh.c, revision c9abdf80
|
||||
sysdeps/ieee754/dbl-64/e_atanh.c
|
||||
|
||||
@@ -220,6 +220,8 @@ acosh 0x1.07c956p+0
|
||||
acosh 0x1.1808eep+0
|
||||
acosh 0x1.1052c4p+0
|
||||
acosh 0x1.0800751d9facbp+0
|
||||
acosh 0x1.08000c1e79fp+0
|
||||
acosh 0x1.080016353964ep+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)
|
||||
|
||||
@@ -1967,6 +1967,144 @@ acosh 0x1.0800751d9facbp+0
|
||||
= 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.08000c1e79fp+0
|
||||
= acosh downward binary32 0x1.08000ep+0 : 0x3.fd5d8cp-4 : inexact-ok
|
||||
= acosh tonearest binary32 0x1.08000ep+0 : 0x3.fd5d9p-4 : inexact-ok
|
||||
= acosh towardzero binary32 0x1.08000ep+0 : 0x3.fd5d8cp-4 : inexact-ok
|
||||
= acosh upward binary32 0x1.08000ep+0 : 0x3.fd5d9p-4 : inexact-ok
|
||||
= acosh downward binary64 0x1.08000ep+0 : 0x3.fd5d8fe65d2c4p-4 : inexact-ok
|
||||
= acosh tonearest binary64 0x1.08000ep+0 : 0x3.fd5d8fe65d2c4p-4 : inexact-ok
|
||||
= acosh towardzero binary64 0x1.08000ep+0 : 0x3.fd5d8fe65d2c4p-4 : inexact-ok
|
||||
= acosh upward binary64 0x1.08000ep+0 : 0x3.fd5d8fe65d2c6p-4 : inexact-ok
|
||||
= acosh downward intel96 0x1.08000ep+0 : 0x3.fd5d8fe65d2c4628p-4 : inexact-ok
|
||||
= acosh tonearest intel96 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462cp-4 : inexact-ok
|
||||
= acosh towardzero intel96 0x1.08000ep+0 : 0x3.fd5d8fe65d2c4628p-4 : inexact-ok
|
||||
= acosh upward intel96 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462cp-4 : inexact-ok
|
||||
= acosh downward m68k96 0x1.08000ep+0 : 0x3.fd5d8fe65d2c4628p-4 : inexact-ok
|
||||
= acosh tonearest m68k96 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462cp-4 : inexact-ok
|
||||
= acosh towardzero m68k96 0x1.08000ep+0 : 0x3.fd5d8fe65d2c4628p-4 : inexact-ok
|
||||
= acosh upward m68k96 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462cp-4 : inexact-ok
|
||||
= acosh downward binary128 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462b828356278c7ap-4 : inexact-ok
|
||||
= acosh tonearest binary128 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462b828356278c7cp-4 : inexact-ok
|
||||
= acosh towardzero binary128 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462b828356278c7ap-4 : inexact-ok
|
||||
= acosh upward binary128 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462b828356278c7cp-4 : inexact-ok
|
||||
= acosh downward ibm128 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462b828356278cp-4 : inexact-ok
|
||||
= acosh tonearest ibm128 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462b828356278cp-4 : inexact-ok
|
||||
= acosh towardzero ibm128 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462b828356278cp-4 : inexact-ok
|
||||
= acosh upward ibm128 0x1.08000ep+0 : 0x3.fd5d8fe65d2c462b828356278dp-4 : inexact-ok
|
||||
= acosh downward binary32 0x1.08000cp+0 : 0x3.fd5d1p-4 : inexact-ok
|
||||
= acosh tonearest binary32 0x1.08000cp+0 : 0x3.fd5d1p-4 : inexact-ok
|
||||
= acosh towardzero binary32 0x1.08000cp+0 : 0x3.fd5d1p-4 : inexact-ok
|
||||
= acosh upward binary32 0x1.08000cp+0 : 0x3.fd5d14p-4 : inexact-ok
|
||||
= acosh downward binary64 0x1.08000cp+0 : 0x3.fd5d10e3cfd2p-4 : inexact-ok
|
||||
= acosh tonearest binary64 0x1.08000cp+0 : 0x3.fd5d10e3cfd22p-4 : inexact-ok
|
||||
= acosh towardzero binary64 0x1.08000cp+0 : 0x3.fd5d10e3cfd2p-4 : inexact-ok
|
||||
= acosh upward binary64 0x1.08000cp+0 : 0x3.fd5d10e3cfd22p-4 : inexact-ok
|
||||
= acosh downward intel96 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae8p-4 : inexact-ok
|
||||
= acosh tonearest intel96 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae8p-4 : inexact-ok
|
||||
= acosh towardzero intel96 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae8p-4 : inexact-ok
|
||||
= acosh upward intel96 0x1.08000cp+0 : 0x3.fd5d10e3cfd21aecp-4 : inexact-ok
|
||||
= acosh downward m68k96 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae8p-4 : inexact-ok
|
||||
= acosh tonearest m68k96 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae8p-4 : inexact-ok
|
||||
= acosh towardzero m68k96 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae8p-4 : inexact-ok
|
||||
= acosh upward m68k96 0x1.08000cp+0 : 0x3.fd5d10e3cfd21aecp-4 : inexact-ok
|
||||
= acosh downward binary128 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae9cf9594e2ce42p-4 : inexact-ok
|
||||
= acosh tonearest binary128 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae9cf9594e2ce42p-4 : inexact-ok
|
||||
= acosh towardzero binary128 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae9cf9594e2ce42p-4 : inexact-ok
|
||||
= acosh upward binary128 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae9cf9594e2ce44p-4 : inexact-ok
|
||||
= acosh downward ibm128 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae9cf9594e2cep-4 : inexact-ok
|
||||
= acosh tonearest ibm128 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae9cf9594e2cep-4 : inexact-ok
|
||||
= acosh towardzero ibm128 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae9cf9594e2cep-4 : inexact-ok
|
||||
= acosh upward ibm128 0x1.08000cp+0 : 0x3.fd5d10e3cfd21ae9cf9594e2cfp-4 : inexact-ok
|
||||
= acosh downward binary64 0x1.08000c1e79fp+0 : 0x3.fd5d187336316p-4 : inexact-ok
|
||||
= acosh tonearest binary64 0x1.08000c1e79fp+0 : 0x3.fd5d187336318p-4 : inexact-ok
|
||||
= acosh towardzero binary64 0x1.08000c1e79fp+0 : 0x3.fd5d187336316p-4 : inexact-ok
|
||||
= acosh upward binary64 0x1.08000c1e79fp+0 : 0x3.fd5d187336318p-4 : inexact-ok
|
||||
= acosh downward intel96 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffcp-4 : inexact-ok
|
||||
= acosh tonearest intel96 0x1.08000c1e79fp+0 : 0x3.fd5d187336318p-4 : inexact-ok
|
||||
= acosh towardzero intel96 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffcp-4 : inexact-ok
|
||||
= acosh upward intel96 0x1.08000c1e79fp+0 : 0x3.fd5d187336318p-4 : inexact-ok
|
||||
= acosh downward m68k96 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffcp-4 : inexact-ok
|
||||
= acosh tonearest m68k96 0x1.08000c1e79fp+0 : 0x3.fd5d187336318p-4 : inexact-ok
|
||||
= acosh towardzero m68k96 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffcp-4 : inexact-ok
|
||||
= acosh upward m68k96 0x1.08000c1e79fp+0 : 0x3.fd5d187336318p-4 : inexact-ok
|
||||
= acosh downward binary128 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffe277a90ecfa02p-4 : inexact-ok
|
||||
= acosh tonearest binary128 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffe277a90ecfa04p-4 : inexact-ok
|
||||
= acosh towardzero binary128 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffe277a90ecfa02p-4 : inexact-ok
|
||||
= acosh upward binary128 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffe277a90ecfa04p-4 : inexact-ok
|
||||
= acosh downward ibm128 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffe277a90ecfap-4 : inexact-ok
|
||||
= acosh tonearest ibm128 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffe277a90ecfap-4 : inexact-ok
|
||||
= acosh towardzero ibm128 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffe277a90ecfap-4 : inexact-ok
|
||||
= acosh upward ibm128 0x1.08000c1e79fp+0 : 0x3.fd5d187336317ffe277a90ecfbp-4 : inexact-ok
|
||||
acosh 0x1.080016353964ep+0
|
||||
= acosh downward binary32 0x1.080018p+0 : 0x3.fd6008p-4 : inexact-ok
|
||||
= acosh tonearest binary32 0x1.080018p+0 : 0x3.fd600cp-4 : inexact-ok
|
||||
= acosh towardzero binary32 0x1.080018p+0 : 0x3.fd6008p-4 : inexact-ok
|
||||
= acosh upward binary32 0x1.080018p+0 : 0x3.fd600cp-4 : inexact-ok
|
||||
= acosh downward binary64 0x1.080018p+0 : 0x3.fd600af22e228p-4 : inexact-ok
|
||||
= acosh tonearest binary64 0x1.080018p+0 : 0x3.fd600af22e22ap-4 : inexact-ok
|
||||
= acosh towardzero binary64 0x1.080018p+0 : 0x3.fd600af22e228p-4 : inexact-ok
|
||||
= acosh upward binary64 0x1.080018p+0 : 0x3.fd600af22e22ap-4 : inexact-ok
|
||||
= acosh downward intel96 0x1.080018p+0 : 0x3.fd600af22e22927p-4 : inexact-ok
|
||||
= acosh tonearest intel96 0x1.080018p+0 : 0x3.fd600af22e229274p-4 : inexact-ok
|
||||
= acosh towardzero intel96 0x1.080018p+0 : 0x3.fd600af22e22927p-4 : inexact-ok
|
||||
= acosh upward intel96 0x1.080018p+0 : 0x3.fd600af22e229274p-4 : inexact-ok
|
||||
= acosh downward m68k96 0x1.080018p+0 : 0x3.fd600af22e22927p-4 : inexact-ok
|
||||
= acosh tonearest m68k96 0x1.080018p+0 : 0x3.fd600af22e229274p-4 : inexact-ok
|
||||
= acosh towardzero m68k96 0x1.080018p+0 : 0x3.fd600af22e22927p-4 : inexact-ok
|
||||
= acosh upward m68k96 0x1.080018p+0 : 0x3.fd600af22e229274p-4 : inexact-ok
|
||||
= acosh downward binary128 0x1.080018p+0 : 0x3.fd600af22e229273dafef597f80cp-4 : inexact-ok
|
||||
= acosh tonearest binary128 0x1.080018p+0 : 0x3.fd600af22e229273dafef597f80ep-4 : inexact-ok
|
||||
= acosh towardzero binary128 0x1.080018p+0 : 0x3.fd600af22e229273dafef597f80cp-4 : inexact-ok
|
||||
= acosh upward binary128 0x1.080018p+0 : 0x3.fd600af22e229273dafef597f80ep-4 : inexact-ok
|
||||
= acosh downward ibm128 0x1.080018p+0 : 0x3.fd600af22e229273dafef597f8p-4 : inexact-ok
|
||||
= acosh tonearest ibm128 0x1.080018p+0 : 0x3.fd600af22e229273dafef597f8p-4 : inexact-ok
|
||||
= acosh towardzero ibm128 0x1.080018p+0 : 0x3.fd600af22e229273dafef597f8p-4 : inexact-ok
|
||||
= acosh upward ibm128 0x1.080018p+0 : 0x3.fd600af22e229273dafef597f9p-4 : inexact-ok
|
||||
= acosh downward binary32 0x1.080016p+0 : 0x3.fd5f88p-4 : inexact-ok
|
||||
= acosh tonearest binary32 0x1.080016p+0 : 0x3.fd5f8cp-4 : inexact-ok
|
||||
= acosh towardzero binary32 0x1.080016p+0 : 0x3.fd5f88p-4 : inexact-ok
|
||||
= acosh upward binary32 0x1.080016p+0 : 0x3.fd5f8cp-4 : inexact-ok
|
||||
= acosh downward binary64 0x1.080016p+0 : 0x3.fd5f8beff161cp-4 : inexact-ok
|
||||
= acosh tonearest binary64 0x1.080016p+0 : 0x3.fd5f8beff161ep-4 : inexact-ok
|
||||
= acosh towardzero binary64 0x1.080016p+0 : 0x3.fd5f8beff161cp-4 : inexact-ok
|
||||
= acosh upward binary64 0x1.080016p+0 : 0x3.fd5f8beff161ep-4 : inexact-ok
|
||||
= acosh downward intel96 0x1.080016p+0 : 0x3.fd5f8beff161d724p-4 : inexact-ok
|
||||
= acosh tonearest intel96 0x1.080016p+0 : 0x3.fd5f8beff161d724p-4 : inexact-ok
|
||||
= acosh towardzero intel96 0x1.080016p+0 : 0x3.fd5f8beff161d724p-4 : inexact-ok
|
||||
= acosh upward intel96 0x1.080016p+0 : 0x3.fd5f8beff161d728p-4 : inexact-ok
|
||||
= acosh downward m68k96 0x1.080016p+0 : 0x3.fd5f8beff161d724p-4 : inexact-ok
|
||||
= acosh tonearest m68k96 0x1.080016p+0 : 0x3.fd5f8beff161d724p-4 : inexact-ok
|
||||
= acosh towardzero m68k96 0x1.080016p+0 : 0x3.fd5f8beff161d724p-4 : inexact-ok
|
||||
= acosh upward m68k96 0x1.080016p+0 : 0x3.fd5f8beff161d728p-4 : inexact-ok
|
||||
= acosh downward binary128 0x1.080016p+0 : 0x3.fd5f8beff161d724dfb1d4b47f1ep-4 : inexact-ok
|
||||
= acosh tonearest binary128 0x1.080016p+0 : 0x3.fd5f8beff161d724dfb1d4b47f2p-4 : inexact-ok
|
||||
= acosh towardzero binary128 0x1.080016p+0 : 0x3.fd5f8beff161d724dfb1d4b47f1ep-4 : inexact-ok
|
||||
= acosh upward binary128 0x1.080016p+0 : 0x3.fd5f8beff161d724dfb1d4b47f2p-4 : inexact-ok
|
||||
= acosh downward ibm128 0x1.080016p+0 : 0x3.fd5f8beff161d724dfb1d4b47fp-4 : inexact-ok
|
||||
= acosh tonearest ibm128 0x1.080016p+0 : 0x3.fd5f8beff161d724dfb1d4b47fp-4 : inexact-ok
|
||||
= acosh towardzero ibm128 0x1.080016p+0 : 0x3.fd5f8beff161d724dfb1d4b47fp-4 : inexact-ok
|
||||
= acosh upward ibm128 0x1.080016p+0 : 0x3.fd5f8beff161d724dfb1d4b48p-4 : inexact-ok
|
||||
= acosh downward binary64 0x1.080016353964ep+0 : 0x3.fd5f9923ea31ap-4 : inexact-ok
|
||||
= acosh tonearest binary64 0x1.080016353964ep+0 : 0x3.fd5f9923ea31cp-4 : inexact-ok
|
||||
= acosh towardzero binary64 0x1.080016353964ep+0 : 0x3.fd5f9923ea31ap-4 : inexact-ok
|
||||
= acosh upward binary64 0x1.080016353964ep+0 : 0x3.fd5f9923ea31cp-4 : inexact-ok
|
||||
= acosh downward intel96 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bffcp-4 : inexact-ok
|
||||
= acosh tonearest intel96 0x1.080016353964ep+0 : 0x3.fd5f9923ea31cp-4 : inexact-ok
|
||||
= acosh towardzero intel96 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bffcp-4 : inexact-ok
|
||||
= acosh upward intel96 0x1.080016353964ep+0 : 0x3.fd5f9923ea31cp-4 : inexact-ok
|
||||
= acosh downward m68k96 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bffcp-4 : inexact-ok
|
||||
= acosh tonearest m68k96 0x1.080016353964ep+0 : 0x3.fd5f9923ea31cp-4 : inexact-ok
|
||||
= acosh towardzero m68k96 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bffcp-4 : inexact-ok
|
||||
= acosh upward m68k96 0x1.080016353964ep+0 : 0x3.fd5f9923ea31cp-4 : inexact-ok
|
||||
= acosh downward binary128 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bfffb58257240266p-4 : inexact-ok
|
||||
= acosh tonearest binary128 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bfffb58257240266p-4 : inexact-ok
|
||||
= acosh towardzero binary128 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bfffb58257240266p-4 : inexact-ok
|
||||
= acosh upward binary128 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bfffb58257240268p-4 : inexact-ok
|
||||
= acosh downward ibm128 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bfffb582572402p-4 : inexact-ok
|
||||
= acosh tonearest ibm128 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bfffb582572402p-4 : inexact-ok
|
||||
= acosh towardzero ibm128 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bfffb582572402p-4 : inexact-ok
|
||||
= acosh upward ibm128 0x1.080016353964ep+0 : 0x3.fd5f9923ea31bfffb582572403p-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
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
Copyright (c) 2023-2025 Alexei Sibidanov.
|
||||
|
||||
The original version of this file was copied from the CORE-MATH
|
||||
project (file src/binary64/acosh/acosh.c, revision 69062c4d).
|
||||
project (file src/binary64/acosh/acosh.c, revision 6736002f).
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -112,15 +112,16 @@ __ieee754_acosh (double x)
|
||||
-0x1.c9045534e6d9ep-14, 0x1.71fedae26a76bp-15, -0x1.f1f4f8cc65342p-17
|
||||
};
|
||||
double z2 = z * z, z4 = z2 * z2,
|
||||
ds = (sh * z)
|
||||
* (cl[0]
|
||||
ds = fma (
|
||||
sh * z,
|
||||
cl[0]
|
||||
+ z
|
||||
* (((cl[1] + z * cl[2]) + z2 * (cl[3] + z * cl[4]))
|
||||
+ z4
|
||||
* ((cl[5] + z * cl[6])
|
||||
+ z2 * (cl[7] + z * cl[8]))));
|
||||
double eps = ds * 0x1.22p-50 - 0x1p-104 * sh;
|
||||
ds += sl;
|
||||
+ z2 * (cl[7] + z * cl[8]))),
|
||||
sl);
|
||||
double eps = ds * 0x1.fcp-51 - 0x1p-104 * sh;
|
||||
double lb = sh + (ds - eps), ub = sh + (ds + eps);
|
||||
if (lb == ub)
|
||||
return lb;
|
||||
|
||||
Reference in New Issue
Block a user