Bien qu'en Oberon .NET, il existe une fonction «Sqrt» dans la classe Math 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 :
MODULE sqrt;
VAR
R:INTEGER;
PROCEDURE SquareRoot(X:REAL):REAL;
VAR
A,B,M,XN:REAL;
BEGIN
IF X=0.0 THEN
RETURN 0.0;
ELSE
M:=1.0;
XN:=X;
WHILE XN>=2.0 DO
XN:=0.25*XN;
M:=2.0*M;
END;
WHILE XN<0.5 DO
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;
RETURN A*M;
END;
END SquareRoot;
BEGIN
R:=2;
WHILE R<=1000 DO
WRITELN("Sqrt(",R,")=",SquareRoot(R));
R:=R*R;
END;
END sqrt.
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 : Samedi, le 2 février 2008