Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Oct 2005 13:36:58 +0000 (UTC)
From:      Bruce Evans <bde@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/lib/msun/src k_cosf.c k_sinf.c
Message-ID:  <200510281336.j9SDawAu011053@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200510281336.j9SDawAu011053>