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

Bruce Evans bde at FreeBSD.org
Fri Oct 28 06:36:59 PDT 2005


bde         2005-10-28 13:36:58 UTC

  FreeBSD src repository

  Modified files:
    lib/msun/src         k_cosf.c k_sinf.c 
  Log:
  Use fairly optimal minimax polynomials for __kernel_cosf() and
  __kernel_sinf().  The old ones were the double-precision polynomials
  with coefficients truncated to float.  Truncation is not a good way
  to convert minimax polynomials to lower precision.  Optimize for
  efficiency and use the lowest-degree polynomials that give a relative
  error of less than 1 ulp -- degree 8 instead of 14 for cosf and degree
  9 instead of 13 for sinf.  For sinf, the degree 8 polynomial happens
  to be 6 times more accurate than the old degree 14 one, but this only
  gives a tiny amount of extra accuracy in results -- we just need to
  use a a degree high enough to give a polynomial whose relative accuracy
  in infinite precision (but with float coefficients) is a small fraction
  of a float ulp (fdlibm generally uses 1/32 for the small fraction, and
  the fraction for our degree 8 polynomial is about 1/600).
  
  The maximum relative errors for cosf() and sinf() are now 0.7719 ulps
  and 0.7969 ulps, respectively.
  
  Revision  Changes    Path
  1.11      +7 -8      src/lib/msun/src/k_cosf.c
  1.9       +8 -8      src/lib/msun/src/k_sinf.c


More information about the cvs-src mailing list