cvs commit: src/lib/msun/src k_cos.c k_cosf.c

Bruce Evans bde at FreeBSD.org
Wed Oct 26 05:36:19 PDT 2005


bde         2005-10-26 12:36:18 UTC

  FreeBSD src repository

  Modified files:
    lib/msun/src         k_cos.c k_cosf.c 
  Log:
  Use a better algorithm for reducing the error in __kernel_cos[f]().
  This supersedes the fix for the old algorithm in rev.1.8 of k_cosf.c.
  
  I want this change mainly because it is an optimization.  It helps
  make software cos[f](x) and sin[f](x) faster than the i387 hardware
  versions for small x.  It is also a simplification, and reduces the
  maximum relative error for cosf() and sinf() on machines like amd64
  from about 0.87 ulps to about 0.80 ulps.  It was validated for cosf()
  and sinf() by exhaustive testing.  Exhaustive testing is not possible
  for cos() and sin(), but ucbtest reports a similar reduction for the
  worst case found by non-exhaustive testing.  ucbtest's non-exhaustive
  testing seems to be good enough to find problems in algorithms but not
  maximum relative errors when there are spikes.  E.g., short runs of
  it find only 3 ulp error where the i387 hardware cos() has an error
  of about 2**40 ulps near pi/2.
  
  Revision  Changes    Path
  1.10      +17 -24    src/lib/msun/src/k_cos.c
  1.10      +5 -27     src/lib/msun/src/k_cosf.c


More information about the cvs-src mailing list