| Commit message (Expand) | Author | Age | Files | Lines |
| * | math: change the formula used for acos.s•••old: 2*atan2(sqrt(1-x),sqrt(1+x))
new: atan2(fabs(sqrt((1-x)*(1+x))),x)
improvements:
* all edge cases are fixed (sign of zero in downward rounding)
* a bit faster (here a single call is about 131ns vs 162ns)
* a bit more precise (at most 1ulp error on 1M uniform random
samples in [0,1), the old formula gave some 2ulp errors as well)
| nsz | 2012-05-05 | 1 | -10/+8 |
| * | acos.s fix: use the formula acos(x) = atan2(sqrt(1-x),sqrt(1+x))•••the old formula atan2(1,sqrt((1+x)/(1-x))) was faster but
could give nan result at x=1 when the rounding mode is
FE_DOWNWARD (so 1-1 == -0 and 2/-0 == -inf), the new formula
gives -0 at x=+-1 with downward rounding.
| nsz | 2012-03-22 | 1 | -3/+1 |
| * | use alternate formula for acos asm to avoid loss of precision | Rich Felker | 2012-03-19 | 1 | -3/+11 |
| * | asm for inverse trig functions•••unlike trig functions, these are easy to do in asm because they do not
involve (arbitrary-precision) argument reduction. fpatan automatically
takes care of domain issues, and in asin and acos, fsqrt takes care of
them for us.
| Rich Felker | 2012-03-19 | 1 | -0/+24 |