[PATCH 00/10] Optimized math routines

Szabolcs Nagy szabolcs.nagy@arm.com
Fri Jul 6 08:49:00 GMT 2018


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



More information about the Libc-alpha mailing list