Section courante

A propos

Section administrative du site

En Ada, il n'existe pas toujours une fonction «Sqrt» permettant de calculer la racine carrée. Pour remédier à se problème, il suffit de créer une fonction ressemblant à ceci :

  1. WITH TEXT_IO;
  2.  
  3. PROCEDURE SquareRoot IS 
  4.    
  5.    USE TEXT_IO;
  6.    
  7.    R:Float;  
  8.    
  9.    FUNCTION Sqrt(X:in Float) RETURN Float IS 
  10.       A,B,M,XN:FLOAT;
  11.    BEGIN
  12.       IF X=0.0 THEN 
  13.          RETURN 0.0;
  14.       ELSE
  15.          M:=1.0;
  16.          XN:=X;
  17.          WHILE XN>=2.0 LOOP
  18.             XN:=0.25*XN;
  19.             M:=2.0*M;
  20.          END LOOP;
  21.          WHILE XN<0.5 LOOP
  22.             XN:=4.0*XN;
  23.             M:=0.5*M;
  24.          END LOOP;
  25.          A:=XN;
  26.          B:=1.0-XN;
  27.          LOOP
  28.             A:=A*(1.0+0.5*B);
  29.             B:=0.25*(3.0+B)*B*B;
  30.             EXIT WHEN B<1.0E-15;
  31.          END LOOP;
  32.          RETURN A*M;
  33.       END IF;
  34.    END;
  35.    
  36. BEGIN
  37.    R:=2.0;   
  38.    WHILE R<=1000.0 LOOP      
  39.       PUT_LINE("Sqrt("& FLOAT'IMAGE(R) &")="& FLOAT'IMAGE(Sqrt(R)));
  40.       R:=R*R;      
  41.    END LOOP;  
  42. END SquareRoot;

on obtiendra le résultat suivant :

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

Voir également

Science - Mathématique

Dernière mise à jour : Samedi, le 25 août 2012