Tom Ritchford
Jul 31, 2024

--

round is fairly slow, and there’s no need for binary search or a test multiplication:

def sqrt(x, precision=1E-10):
last_guess = x
guess = x / 2
while abs(last_guess - guess) >= precision:
last_guess = guess
guess = ((x / guess) + guess) / 2
return guess

You take the average of guess and x / guess until you get the right answer, because you know that the right answer is somewhere between those two values.

It gives you the square root of 2 in 5 iterations, and of 2,000,000 in 15 iterations. (For math geeks, it’s basically Euler’s method, and you could do it faster with the Newton-Raphson method.)

--

--