Как вычислить ArcSin?

Вычисление ArcSin через ArcTan и с помощью сопроцессора FPU.

Arcsin(x):=Arctan(x/Sqrt(1-x*x));

Или вот так:

function ArcSin( x:extended):extended;  assembler;
var 
  sw:word;
asm
      fld     [x]
      xor     al,al
      mov     ah,byte ptr [x+9]
      shl     ah,1
      jnc     @plus
 
      fchs
      inc     al
@plus:
      { fld1}   db    0CDh, 35h, 0e8h
      fld     st(1)
      fmul    st,st(2)
      fsub
      fsqrt
      fcom    st(1)
      fstsw   [sw]
      fwait
      mov     ah,byte ptr [sw+1]
      sahf
      jnb     @l1
      fxch
      fpatan
      { fld1}  db    0CDh, 35h, 0e8h
      fchs
      { fldPi} db    0CDh, 35h, 0eBh
      fscale
      fstp    St(1)
      fsubrp  st(1),st
      jmp     @2
@l1:  fpatan
@2:   shr     al,1
      jnc     @end
      fchs
@end:
end;