[all-commits] [llvm/llvm-project] b9d87d: [libc] Improve the performance of exp2f.

lntue via All-commits all-commits at lists.llvm.org
Thu Mar 24 15:06:55 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: b9d87d746621c9bd1db0b6e05492c8e2ed9e39da
      https://github.com/llvm/llvm-project/commit/b9d87d746621c9bd1db0b6e05492c8e2ed9e39da
  Author: Tue Ly <lntue at google.com>
  Date:   2022-03-24 (Thu, 24 Mar 2022)

  Changed paths:
    M libc/src/math/generic/exp2f.cpp
    M libc/test/src/math/exp2f_test.cpp

  Log Message:
  -----------
  [libc] Improve the performance of exp2f.

Reduce the range-reduction table size from 128 entries down to 64 entries, and
reduce the polynomial's degree from 6 down to 4.

Currently we use a degree-6 minimax polynomial on an interval of length 2^-7
around 0 to compute exp2f.  Based on the suggestion of @santoshn and the RLIBM
project (https://github.com/rutgers-apl/rlibm-prog/blob/main/libm/float/exp2.c)
it is possible to have a good polynomial of degree-4 on a subinterval of length
2^(-6) to approximate 2^x.

We did try to either reduce the degree of the polynomial down to 3 or increase
the interval size to 2^(-5), but in both cases the number of exceptional values
exploded.  So we settle with using a degree-4 polynomial of the interval of
size 2^(-6) around 0.

Reviewed By: michaelrj, sivachandra, zimmermann6, santoshn

Differential Revision: https://reviews.llvm.org/D122346




More information about the All-commits mailing list