This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[PATCH 00/10] Optimized math routines
- From: Szabolcs Nagy <szabolcs dot nagy at arm dot com>
- To: GNU C Library <libc-alpha at sourceware dot org>
- Cc: nd at arm dot com, Wilco Dijkstra <Wilco dot Dijkstra at arm dot com>, Joseph Myers <joseph at codesourcery dot com>
- Date: Fri, 6 Jul 2018 09:47:57 +0100
- Subject: [PATCH 00/10] Optimized math routines
Optimized exp, exp2, log, log2, pow, sinf, cosf and sincosf
implementations.
I updated the patches according to comments. I included the
sincosf patches from Wilco, but split out the math_config.h
toint changes into a separate patch.
This set does not include the wrapper removal that changes ABI.
I'm still testing those and they can be applied separately.
The new exp increases the ulp error bounds in non-nearest
rounding modes, so ulp updates are needed.
Szabolcs Nagy (8):
Clean up converttoint handling and document the semantics
Add new exp and exp2 implementations
aarch64: update libm-test-ulps
arm: update libm-test-ulps
x86_64: update libm-test-ulps
Add new log implementation
Add new log2 implementation
Add new pow implementation
Wilco Dijkstra (2):
Improve performance of sincosf
Improve performance of sinf and cosf
NEWS | 2 +
math/Makefile | 7 +-
sysdeps/aarch64/fpu/math_private.h | 17 +-
sysdeps/aarch64/libm-test-ulps | 112 +-
sysdeps/arm/libm-test-ulps | 88 +-
sysdeps/generic/math_private.h | 1 -
sysdeps/i386/fpu/e_exp_data.c | 1 +
sysdeps/i386/fpu/e_log2_data.c | 1 +
sysdeps/i386/fpu/e_log_data.c | 1 +
sysdeps/i386/fpu/e_pow_log_data.c | 1 +
sysdeps/i386/fpu/math_err.c | 1 +
sysdeps/i386/fpu/t_exp.c | 1 -
sysdeps/ia64/fpu/e_exp_data.c | 1 +
sysdeps/ia64/fpu/e_log2_data.c | 1 +
sysdeps/ia64/fpu/e_log_data.c | 1 +
sysdeps/ia64/fpu/e_pow_log_data.c | 1 +
sysdeps/ia64/fpu/math_err.c | 1 +
sysdeps/ia64/fpu/s_sincosf_data.c | 1 +
sysdeps/ia64/fpu/t_exp.c | 1 -
sysdeps/ieee754/dbl-64/Makefile | 1 -
sysdeps/ieee754/dbl-64/e_exp.c | 477 +-
sysdeps/ieee754/dbl-64/e_exp2.c | 220 +-
sysdeps/ieee754/dbl-64/e_exp_data.c | 196 +
sysdeps/ieee754/dbl-64/e_log.c | 257 +-
sysdeps/ieee754/dbl-64/e_log2.c | 240 +-
sysdeps/ieee754/dbl-64/e_log2_data.c | 194 +
sysdeps/ieee754/dbl-64/e_log_data.c | 321 +
sysdeps/ieee754/dbl-64/e_pow.c | 656 +-
sysdeps/ieee754/dbl-64/e_pow_log_data.c | 173 +
sysdeps/ieee754/dbl-64/eexp.tbl | 172 -
sysdeps/ieee754/dbl-64/math_config.h | 187 +
sysdeps/ieee754/dbl-64/math_err.c | 92 +
sysdeps/ieee754/dbl-64/t_exp.c | 435 --
sysdeps/ieee754/dbl-64/t_exp2.h | 585 --
sysdeps/ieee754/dbl-64/uexp.h | 68 -
sysdeps/ieee754/dbl-64/uexp.tbl | 1786 -----
sysdeps/ieee754/dbl-64/ulog.h | 93 -
sysdeps/ieee754/dbl-64/ulog.tbl | 3326 --------
sysdeps/ieee754/dbl-64/upow.h | 76 -
sysdeps/ieee754/dbl-64/upow.tbl | 10188 -------------------------
sysdeps/ieee754/dbl-64/wordsize-64/e_log2.c | 128 -
sysdeps/ieee754/flt-32/e_expf.c | 5 +-
sysdeps/ieee754/flt-32/math_config.h | 21 +-
sysdeps/ieee754/flt-32/s_cosf.c | 161 +-
sysdeps/ieee754/flt-32/s_sincosf.c | 197 +-
sysdeps/ieee754/flt-32/s_sincosf.h | 258 +-
sysdeps/ieee754/flt-32/s_sincosf_data.c | 74 +
sysdeps/ieee754/flt-32/s_sinf.c | 172 +-
sysdeps/m68k/m680x0/fpu/e_exp_data.c | 1 +
sysdeps/m68k/m680x0/fpu/e_log2_data.c | 1 +
sysdeps/m68k/m680x0/fpu/e_log_data.c | 1 +
sysdeps/m68k/m680x0/fpu/e_pow_log_data.c | 1 +
sysdeps/m68k/m680x0/fpu/math_err.c | 1 +
sysdeps/m68k/m680x0/fpu/s_sincosf_data.c | 1 +
sysdeps/m68k/m680x0/fpu/t_exp.c | 1 -
sysdeps/x86_64/fpu/libm-test-ulps | 100 +-
sysdeps/x86_64/fpu/multiarch/Makefile | 4 +-
sysdeps/x86_64/fpu/multiarch/s_sincosf-fma.c | 33 +-
58 files changed, 2606 insertions(+), 18537 deletions(-)
create mode 100644 sysdeps/i386/fpu/e_exp_data.c
create mode 100644 sysdeps/i386/fpu/e_log2_data.c
create mode 100644 sysdeps/i386/fpu/e_log_data.c
create mode 100644 sysdeps/i386/fpu/e_pow_log_data.c
create mode 100644 sysdeps/i386/fpu/math_err.c
delete mode 100644 sysdeps/i386/fpu/t_exp.c
create mode 100644 sysdeps/ia64/fpu/e_exp_data.c
create mode 100644 sysdeps/ia64/fpu/e_log2_data.c
create mode 100644 sysdeps/ia64/fpu/e_log_data.c
create mode 100644 sysdeps/ia64/fpu/e_pow_log_data.c
create mode 100644 sysdeps/ia64/fpu/math_err.c
create mode 100644 sysdeps/ia64/fpu/s_sincosf_data.c
delete mode 100644 sysdeps/ia64/fpu/t_exp.c
create mode 100644 sysdeps/ieee754/dbl-64/e_exp_data.c
create mode 100644 sysdeps/ieee754/dbl-64/e_log2_data.c
create mode 100644 sysdeps/ieee754/dbl-64/e_log_data.c
create mode 100644 sysdeps/ieee754/dbl-64/e_pow_log_data.c
delete mode 100644 sysdeps/ieee754/dbl-64/eexp.tbl
create mode 100644 sysdeps/ieee754/dbl-64/math_config.h
create mode 100644 sysdeps/ieee754/dbl-64/math_err.c
delete mode 100644 sysdeps/ieee754/dbl-64/t_exp.c
delete mode 100644 sysdeps/ieee754/dbl-64/t_exp2.h
delete mode 100644 sysdeps/ieee754/dbl-64/uexp.h
delete mode 100644 sysdeps/ieee754/dbl-64/uexp.tbl
delete mode 100644 sysdeps/ieee754/dbl-64/ulog.h
delete mode 100644 sysdeps/ieee754/dbl-64/ulog.tbl
delete mode 100644 sysdeps/ieee754/dbl-64/upow.h
delete mode 100644 sysdeps/ieee754/dbl-64/upow.tbl
delete mode 100644 sysdeps/ieee754/dbl-64/wordsize-64/e_log2.c
create mode 100644 sysdeps/ieee754/flt-32/s_sincosf_data.c
create mode 100644 sysdeps/m68k/m680x0/fpu/e_exp_data.c
create mode 100644 sysdeps/m68k/m680x0/fpu/e_log2_data.c
create mode 100644 sysdeps/m68k/m680x0/fpu/e_log_data.c
create mode 100644 sysdeps/m68k/m680x0/fpu/e_pow_log_data.c
create mode 100644 sysdeps/m68k/m680x0/fpu/math_err.c
create mode 100644 sysdeps/m68k/m680x0/fpu/s_sincosf_data.c
delete mode 100644 sysdeps/m68k/m680x0/fpu/t_exp.c
--
2.14.1