diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2024-10-18 16:04:30 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2024-12-18 17:24:43 -0300 |
commit | 66fa7ad437affc64b3a81332d750e6f998b2e343 (patch) | |
tree | 53bca177661c41fdffd74568289c9e42f1f3059b /sysdeps/riscv | |
parent | 45126f866c3c986fc99941b2af8ed65d7679dd4b (diff) | |
download | glibc-66fa7ad437affc64b3a81332d750e6f998b2e343.zip glibc-66fa7ad437affc64b3a81332d750e6f998b2e343.tar.gz glibc-66fa7ad437affc64b3a81332d750e6f998b2e343.tar.bz2 |
math: Use acosf from CORE-MATH
The CORE-MATH implementation is correctly rounded (for any rounding mode)
and shows slight better performance to the generic acosf.
The code was adapted to glibc style and to use the definition of
math_config.h (to handle errno, overflow, and underflow).
Benchtest on x64_64 (Ryzen 9 5900X, gcc 14.2.1), aarch64 (Neoverse-N1,
gcc 13.3.1), and powerpc (POWER10, gcc 13.2.1):
Latency master patched improvement
x86_64 52.5098 36.6312 30.24%
x86_64v2 53.0217 37.3091 29.63%
x86_64v3 42.8501 32.3977 24.39%
i686 207.3960 109.4000 47.25%
aarch64 21.3694 13.7871 35.48%
power10 14.5542 7.2891 49.92%
reciprocal-throughput master patched improvement
x86_64 14.1487 15.9508 -12.74%
x86_64v2 14.3293 16.1899 -12.98%
x86_64v3 13.6563 12.6161 7.62%
i686 158.4060 45.7354 71.13%
aarch64 12.5515 9.19233 26.76%
power10 5.7868 3.3487 42.13%
Signed-off-by: Alexei Sibidanov <sibid@uvic.ca>
Signed-off-by: Paul Zimmermann <Paul.Zimmermann@inria.fr>
Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Reviewed-by: DJ Delorie <dj@redhat.com>
Diffstat (limited to 'sysdeps/riscv')
-rw-r--r-- | sysdeps/riscv/nofpu/libm-test-ulps | 4 | ||||
-rw-r--r-- | sysdeps/riscv/rvd/libm-test-ulps | 4 |
2 files changed, 0 insertions, 8 deletions
diff --git a/sysdeps/riscv/nofpu/libm-test-ulps b/sysdeps/riscv/nofpu/libm-test-ulps index 84b9e15..8d3b048 100644 --- a/sysdeps/riscv/nofpu/libm-test-ulps +++ b/sysdeps/riscv/nofpu/libm-test-ulps @@ -3,22 +3,18 @@ # Maximal error of functions: Function: "acos": double: 1 -float: 1 ldouble: 1 Function: "acos_downward": double: 1 -float: 1 ldouble: 1 Function: "acos_towardzero": double: 1 -float: 1 ldouble: 1 Function: "acos_upward": double: 1 -float: 1 ldouble: 1 Function: "acosh": diff --git a/sysdeps/riscv/rvd/libm-test-ulps b/sysdeps/riscv/rvd/libm-test-ulps index b9446e5..a1d85be 100644 --- a/sysdeps/riscv/rvd/libm-test-ulps +++ b/sysdeps/riscv/rvd/libm-test-ulps @@ -3,22 +3,18 @@ # Maximal error of functions: Function: "acos": double: 1 -float: 1 ldouble: 1 Function: "acos_downward": double: 1 -float: 1 ldouble: 1 Function: "acos_towardzero": double: 1 -float: 1 ldouble: 1 Function: "acos_upward": double: 1 -float: 1 ldouble: 1 Function: "acosh": |