Add integer square root to SCMP.

This commit is contained in:
2023-11-09 00:38:01 -08:00
parent 94672bba98
commit f99d5a8356
4 changed files with 70 additions and 1 deletions

View File

@@ -151,5 +151,37 @@ DefaultEpsilon(int& epsilon)
}
size_t
ISqrt(size_t n)
{
if (n < 2) {
return n;
}
size_t start = 0;
size_t end = n / 2;
size_t result = 0;
while (start <= end) {
auto middle = (start + end) >> 1;
result = middle * middle;
if (result == n) {
return middle;
}
if (result < n) {
start = middle + 1;
result = middle;
} else {
end = middle - 1;
result = middle;
}
}
return result;
}
} // namespace scmp