# use acos(x) = atan2(fabs(sqrt((1-x)*(1+x))), x) .global acosf .type acosf,@function acosf: flds 4(%esp) jmp 1f .global acosl .type acosl,@function acosl: fldt 4(%esp) jmp 1f .global acos .type acos,@function acos: fldl 4(%esp) 1: 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 ret