Bien qu'en MinGW, il existe une fonction «Sqrt» dans l'entête math.h 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:
#include <iostream.h>
double SquareRoot(double X) {
double A,B,M,XN;
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;
}
}
int main() {
double R=2.0;
while(R<=1000.0) {
std::cout << "Sqrt(" << R << ")=" << SquareRoot(R) << std::endl;
R*=R;
}
return 0;
}
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 7 avril 2018