math: change the formula used for acos.s
[musl] / src / math / i386 / acos.s
1 # use acos(x) = atan2(fabs(sqrt((1-x)*(1+x))), x)
2
3 .global acosf
4 .type acosf,@function
5 acosf:
6         flds 4(%esp)
7         jmp 1f
8
9 .global acosl
10 .type acosl,@function
11 acosl:
12         fldt 4(%esp)
13         jmp 1f
14
15 .global acos
16 .type acos,@function
17 acos:
18         fldl 4(%esp)
19 1:      fld %st(0)
20         fld1
21         fsub %st(0),%st(1)
22         fadd %st(2)
23         fmulp
24         fsqrt
25         fabs         # fix sign of zero (matters in downward rounding mode)
26         fxch %st(1)
27         fpatan
28         ret