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 :
- WITH TEXT_IO;
-
- PROCEDURE SquareRoot IS
-
- USE TEXT_IO;
-
- R:Float;
-
- FUNCTION Sqrt(X:in Float) RETURN Float IS
- A,B,M,XN:FLOAT;
- BEGIN
- IF X=0.0 THEN
- RETURN 0.0;
- ELSE
- M:=1.0;
- XN:=X;
- WHILE XN>=2.0 LOOP
- XN:=0.25*XN;
- M:=2.0*M;
- END LOOP;
- WHILE XN<0.5 LOOP
- XN:=4.0*XN;
- M:=0.5*M;
- END LOOP;
- A:=XN;
- B:=1.0-XN;
- LOOP
- A:=A*(1.0+0.5*B);
- B:=0.25*(3.0+B)*B*B;
- EXIT WHEN B<1.0E-15;
- END LOOP;
- RETURN A*M;
- END IF;
- END;
-
- BEGIN
- R:=2.0;
- WHILE R<=1000.0 LOOP
- PUT_LINE("Sqrt("& FLOAT'IMAGE(R) &")="& FLOAT'IMAGE(Sqrt(R)));
- R:=R*R;
- END LOOP;
- END SquareRoot;
on obtiendra le résultat suivant :
Sqrt(2)= 1.41421Sqrt(4)= 2.0000
Sqrt(16)= 4.0000
Sqrt(256)= 16.0000
Voir également
Dernière mise à jour : Samedi, le 25 août 2012