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.
This commit is contained in:
nsz 2012-03-22 14:54:47 +01:00
parent 2e0c1fed36
commit a4a0c91275
2 changed files with 2 additions and 6 deletions

View File

@ -18,12 +18,10 @@ acos:
fld %st(1) fld %st(1)
fld1 fld1
fsubp fsubp
fsqrt
fxch %st(2) fxch %st(2)
faddp faddp
fdivp
fsqrt fsqrt
fld1
fxch %st(1)
fpatan fpatan
fld1 fld1
fld1 fld1

View File

@ -6,12 +6,10 @@ acosl:
fld %st(1) fld %st(1)
fld1 fld1
fsubp fsubp
fsqrt
fxch %st(2) fxch %st(2)
faddp faddp
fdivp
fsqrt fsqrt
fld1
fxch %st(1)
fpatan fpatan
fld1 fld1
fld1 fld1