Date: Wed, 26 Oct 2005 12:36:18 +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_cos.c k_cosf.c Message-ID: <200510261236.j9QCaI5s041601@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200510261236.j9QCaI5s041601>