Bien qu'en Delphi/Kylix/Lazarus, il existe une fonction «Sqrt» permettant de calculer la racine carré, il peut quand même être amusant d'effectuer se genre de calcul nous même. Pour remédier à se problème, il suffit de créer une fonction ressemblant à ceci:
- Program SqrtSource;
-
- {$APPTYPE CONSOLE}
- Uses SysUtils;
-
- 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;
-
- Var
- R:Real;
-
- BEGIN
- R:=2;
- While R<=1000 do Begin
- WriteLn('Sqrt(',R:0:5,')=',SquareRoot(R):0:5);
- R:=R*R;
- End;
- END.
on obtiendra le résultat suivant :
Sqrt(2)= 1.41421Sqrt(4)= 2.0000
Sqrt(16)= 4.0000
Sqrt(256)= 16.0000
Dernière mise à jour : Dimanche, le 17 août 2014