xref: /aosp_15_r20/external/musl/src/math/i386/acos.s (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker# use acos(x) = atan2(fabs(sqrt((1-x)*(1+x))), x)
2*c9945492SAndroid Build Coastguard Worker
3*c9945492SAndroid Build Coastguard Worker.global acos
4*c9945492SAndroid Build Coastguard Worker.type acos,@function
5*c9945492SAndroid Build Coastguard Workeracos:
6*c9945492SAndroid Build Coastguard Worker	fldl 4(%esp)
7*c9945492SAndroid Build Coastguard Worker	fld %st(0)
8*c9945492SAndroid Build Coastguard Worker	fld1
9*c9945492SAndroid Build Coastguard Worker	fsub %st(0),%st(1)
10*c9945492SAndroid Build Coastguard Worker	fadd %st(2)
11*c9945492SAndroid Build Coastguard Worker	fmulp
12*c9945492SAndroid Build Coastguard Worker	fsqrt
13*c9945492SAndroid Build Coastguard Worker	fabs         # fix sign of zero (matters in downward rounding mode)
14*c9945492SAndroid Build Coastguard Worker	fxch %st(1)
15*c9945492SAndroid Build Coastguard Worker	fpatan
16*c9945492SAndroid Build Coastguard Worker	fstpl 4(%esp)
17*c9945492SAndroid Build Coastguard Worker	fldl 4(%esp)
18*c9945492SAndroid Build Coastguard Worker	ret
19