cvs commit: src/lib/msun/src k_cos.c k_cosf.c
bde at FreeBSD.org
Wed Oct 26 05:36:19 PDT 2005
bde 2005-10-26 12:36:18 UTC
FreeBSD src repository
lib/msun/src k_cos.c k_cosf.c
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-all