1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-16 10:20:30 +00:00
freebsd/lib/msun
Bruce Evans 8d3b309bad Fixed cosf(x) when x is a "negative" NaNs. I broke this in rev.1.10.
cosf(x) is supposed to return something like x when x is a NaN, and
we actually fairly consistently return x-x which is normally very like
x (on i386 and and it is x if x is a quiet NaN and x with the quiet bit
set if x is a signaling NaN.  Rev.1.10 broke this by normalising x to
fabsf(x).  It's not clear if fabsf(x) is should preserve x if x is a NaN,
but it actually clears the sign bit, and other parts of the code depended
on this.

The bugs can be fixed by saving x before normalizing it, and using the
saved x only for NaNs, and using uint32_t instead of int32_t for ix
so that negative NaNs are not misclassified even if fabsf() doesn't
clear their sign bit, but gcc pessimizes the saving very well, especially
on Athlon XPs (it generates extra loads and stores, and mixes use of
the SSE and i387, and this somehow messes up pipelines).  Normalizing
x is not a very good optimization anyway, so stop doing it.  (It adds
latency to the FPU pipelines, but in previous versions it helped except
for |x| <= 3pi/4 by simplifying the integer pipelines.)  Use the same
organization as in s_sinf.c and s_tanf.c with some branches reordered.
These changes combined recover most of the performance of the unfixed
version on A64 but still lose 10% on AXP with gcc-3.4 -O1 but not with
gcc-3.3 -O1.
2005-11-30 06:47:18 +00:00
..
alpha
amd64 Add a missing ldexpf() alias for amd64. 2005-09-12 20:54:00 +00:00
arm
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
man s/5.5/6.0/ in HISTORY section. 2005-11-24 09:25:10 +00:00
powerpc
sparc64
src Fixed cosf(x) when x is a "negative" NaNs. I broke this in rev.1.10. 2005-11-30 06:47:18 +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