cvs commit: src/lib/msun/src e_rem_pio2.c e_rem_pio2f.c

Bruce Evans bde at FreeBSD.org
Fri Feb 22 18:43:24 UTC 2008


bde         2008-02-22 18:43:23 UTC

  FreeBSD src repository

  Modified files:
    lib/msun/src         e_rem_pio2.c e_rem_pio2f.c 
  Log:
  Avoid using FP-to-integer conversion for !(amd64 || i386) too.  Use the
  FP-to-FP method to round to an integer on all arches, and convert this
  to an int using FP-to-integer conversion iff irint() is not available.
  This is cleaner and works well on at least ia64, where it saves 20-30
  cycles or about 10% on average for 9Pi/4 < |x| <= 32pi/2 (should be
  similar up to 2**19pi/2, but I only tested the smaller range).
  
  After the previous commit to e_rem_pio2.c removed the "quick check no
  cancellation" non-optimization, the result of the FP-to-integer
  conversion is not needed so early, so using irint() became a much
  smaller optimization than when it was committed.
  
  An earlier commit message said that cos, cosf, sin and sinf were equally
  fast on amd64 and i386 except for cos and sin on i386.  Actually, cos
  and sin on amd64 are equally fast to cosf and sinf on i386 (~88 cycles),
  while cosf and sinf on amd64 are not quite equally slow to cos and sin
  on i386 (average 115 cycles with more variance).
  
  Revision  Changes    Path
  1.14      +2 -3      src/lib/msun/src/e_rem_pio2.c
  1.23      +2 -3      src/lib/msun/src/e_rem_pio2f.c


More information about the cvs-all mailing list