Я не могу понять, почему этот алгоритм входит в бесконечный цикл, если введенное число более 12 цифр. Кто-нибудь может понять, почему это никогда не закончится? Благодарю. Я просто обновил алгоритм, чтобы использовать функцию fabs(), и все равно получаю бесконечный цикл.алгоритм квадратного корня C++
double squareroot(double x)
{ /* computes the square root of x */
/* make sure x is not negative .. no math crimes allowed! */
assert(x >= 0);
if (x==0) return 0;
/* the sqrt must be between xhi and xlo */
double xhi = x;
double xlo = 0;
double guess = x/2;
/* We stop when guess*guess-x is very small */
while (abs(guess*guess-x) > 0.00001)
{
if (guess*guess > x){
xhi = guess;
}
else {
xlo = guess;
}
guess = (xhi + xlo)/2;
}
return guess;
}
'abs' функция для целых чисел. Вы имели в виду 'fabs'? –
12 цифр 'guess * guess'? что было бы большим .. – Ankur
http://floating-point-gui.de/ –