Section courante

A propos

Section administrative du site

Bien qu'en Free Pascal, 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:

  1. Program SquareRt;
  2.  
  3. Function SquareRoot(X:Real):Real;
  4. Var
  5.  A,B,M,XN:Real;
  6. Begin
  7.  If X=0.0Then Begin
  8.   SquareRoot:=0.0;
  9.  End
  10.   Else
  11.  Begin
  12.   M:=1.0;
  13.   XN:=X;
  14.   While XN>=2.0 do Begin
  15.    XN:=0.25*XN;
  16.    M:=2.0*M;
  17.   End;
  18.   While XN<0.5 do Begin
  19.    XN:=4.0*XN;
  20.    M:=0.5*M;
  21.   End;
  22.   A:=XN;
  23.   B:=1.0-XN;
  24.   Repeat
  25.    A:=A*(1.0+0.5*B);
  26.    B:=0.25*(3.0+B)*B*B;
  27.   Until B<1.0E-15;
  28.   SquareRoot:=A*M;
  29.  End;
  30. End;
  31.  
  32. Var
  33.  R:Real;
  34.  
  35. BEGIN
  36.  R:=2;
  37.  While R<=1000 do Begin
  38.   WriteLn('Sqrt(',R:0:5,')=',Sqrt(R):0:5,' ',SquareRoot(R):0:5);
  39.   R:=R*R;
  40.  End;
  41. END.

on obtiendra le résultat suivant :

Sqrt(2)= 1.41421 1.41421
Sqrt(4)= 2.0000 2.0000
Sqrt(16)= 4.0000 4.0000
Sqrt(256)= 16.0000 16.0000


Dernière mise à jour : Jeudi, le 29 décembre 2011