19 lines
294 B
ArmAsm
19 lines
294 B
ArmAsm
|
# use acos(x) = atan2(fabs(sqrt((1-x)*(1+x))), x)
|
||
|
|
||
|
.global acos
|
||
|
.type acos,@function
|
||
|
acos:
|
||
|
fldl 4(%esp)
|
||
|
fld %st(0)
|
||
|
fld1
|
||
|
fsub %st(0),%st(1)
|
||
|
fadd %st(2)
|
||
|
fmulp
|
||
|
fsqrt
|
||
|
fabs # fix sign of zero (matters in downward rounding mode)
|
||
|
fxch %st(1)
|
||
|
fpatan
|
||
|
fstpl 4(%esp)
|
||
|
fldl 4(%esp)
|
||
|
ret
|