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