1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-23 11:18:54 +00:00
freebsd/lib/msun
Bruce Evans f4b01a9edf Rearranged the polynomial evaluation to reduce dependencies, as in
k_tanf.c but with different details.

The polynomial is odd with degree 13 for tanf() and odd with degree
9 for sinf(), so the details are not very different for sinf() -- the
term with the x**11 and x**13 coefficients goes awaym and (mysteriously)
it helps to do the evaluation of w = z*z early although moving it later
was a key optimization for tanf().  The details are different but simpler
for cosf() because the polynomial is even and of lower degree.

On Athlons, for uniformly distributed args in [-2pi, 2pi], this gives
an optimization of about 4 cycles (10%) in most cases (13% for sinf()
on AXP, but 0% for cosf() with gcc-3.3 -O1 on AXP).  The best case
(sinf() with gcc-3.4 -O1 -fcaller-saves on A64) now takes 33-39 cycles
(was 37-45 cycles).  Hardware sinf takes 74-129 cycles.  Despite
being fine tuned for Athlons, the optimization is even larger on
some other arches (about 15% on ia64 (pluto2) and 20% on alpha (beast)
with gcc -O2 -fomit-frame-pointer).
2005-11-30 11:51:17 +00:00
..
alpha Replace fegetmask() and fesetmask() with feenableexcept(), 2005-03-16 19:03:46 +00:00
amd64 Add a missing ldexpf() alias for amd64. 2005-09-12 20:54:00 +00:00
arm Replace fegetmask() and fesetmask() with feenableexcept(), 2005-03-16 19:03:46 +00:00
bsdsrc Removed an unused declaration which was so old that it wasn't a prototype 2005-11-18 05:03:12 +00:00
i387 Fixed some comments added in rev.1.5. 2005-10-30 12:21:02 +00:00
ia64 Replace fegetmask() and fesetmask() with feenableexcept(), 2005-03-16 19:03:46 +00:00
man s/5.5/6.0/ in HISTORY section. 2005-11-24 09:25:10 +00:00
powerpc Replace fegetmask() and fesetmask() with feenableexcept(), 2005-03-16 19:03:46 +00:00
sparc64 Replace fegetmask() and fesetmask() with feenableexcept(), 2005-03-16 19:03:46 +00:00
src Rearranged the polynomial evaluation to reduce dependencies, as in 2005-11-30 11:51:17 +00:00
Makefile Detach k_rem_pio2f.c from the build since it is now unused. It is a libm 2005-11-06 17:59:40 +00:00