Bien qu'en AWK, il existe une fonction «Sqr» 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:
#! /bin/sh
BEGIN {
R=2;
while(R<=1000) {
print "Sqrt(" R ")=" sqrt(R) " " SquareRoot(R) "\n";
R=R*R;
}
exit;
}
function SquareRoot(X) {
if(X==0.0) {
return 0.0;
} else {
M=1.0;
XN=X;
while(XN>=2.0) {
XN=0.25*XN;
M=2.0*M;
}
while(XN<0.5) {
XN=4.0*XN;
M=0.5*M;
}
A=XN;
B=1.0-XN;
do {
A=A*(1.0+0.5*B);
B=0.25*(3.0+B)*B*B;
} while(B>=1.0E-15);
return A*M;
}
}
on obtiendra le résultat suivant:
Sqrt(2)= 1.41421 1.41421Sqrt(4)= 2.0000 2.0000
Sqrt(16)= 4.0000 4.0000
Sqrt(256)= 16.0000 16.0000
Voir également
Dernière mise à jour : Dimanche, le 12 mars 2006