sqrtApproximate function
Returns an approximation of the integer square root of n.
This function is much faster than math.sqrt for integers, but is an approximation that is likely good enough for most use-cases (e.g. games).
The algorithm is based on the Newton's method, which iteratively refines the guess by averaging it with the original number divided by the guess.
Example
print(approximateSqrt(9)); // => 3
print(approximateSqrt(16)); // => 4
print(approximateSqrt(25)); // => 5
Implementation
int sqrtApproximate(int n) {
var g = 0x8000;
var c = 0x8000;
while (true) {
if (g * g > n) {
g ^= c;
}
c >>= 1;
if (c == 0) {
return g;
}
g |= c;
}
}