En Pascal, il n'existe pas de fonction «ArcSin» permettant de calculer l'Arc Sinus d'un cercle, mais il peut être intéressant d'en reproduire une pour notre plaisir personnel:
- Program ArcSinus;
-
- Function Abs(x:Real):Real;Begin
- If x < 0 Then x := -x;
- Abs := x;
- End;
-
- Function SquareRoot(X:Real):Real;
- Var
- A,B,M,XN:Real;
- Begin
- If X=0.0Then Begin
- SquareRoot:=0.0;
- End
- Else
- Begin
- M:=1.0;
- XN:=X;
- While XN>=2.0 do Begin
- XN:=0.25*XN;
- M:=2.0*M;
- End;
- While XN<0.5 do Begin
- XN:=4.0*XN;
- M:=0.5*M;
- End;
- A:=XN;
- B:=1.0-XN;
- Repeat
- A:=A*(1.0+0.5*B);
- B:=0.25*(3.0+B)*B*B;
- Until B<1.0E-15;
- SquareRoot:=A*M;
- End;
- End;
-
- Function ArcTan(X:Real):Real;
- Var
- A,B:Real;
- N:Integer;
- Begin
- A := 1.0 / SquareRoot(1.0 + (X * X));
- B := 1.0;
- For N:=1 to 11 do Begin
- A := (A + B) / 2.0;
- B := SquareRoot(A * B);
- End;
- ArcTan:=X/(SquareRoot(1.0+(X*X))*A);
- End;
-
- Function ArcSin(a:Real):Real;
- Const
- PI=3.141592653589793;
- Begin
- If Abs(a)=1.0Then ArcSin:=PI/2.0
- Else ArcSin:=ArcTan(a/SquareRoot(1.0-a*a));
- End;
-
- BEGIN
- WriteLn('ArcSin(0.5)=',ArcSin(0.5):1:15);
- END.
on obtiendra le résultat suivant:
ArcSin(0.5)= 5.235987755982989E-001
Dernière mise à jour : Mardi, le 25 octobre 2016