(svn r23415) -Feature: Infrastructure maintenance costs.
This commit is contained in:
@@ -46,3 +46,33 @@ int GreatestCommonDivisor(int a, int b)
|
||||
return a;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the integer square root.
|
||||
* @param num Radicand.
|
||||
* @return Rounded integer square root.
|
||||
* @note Algorithm taken from http://en.wikipedia.org/wiki/Methods_of_computing_square_roots
|
||||
*/
|
||||
uint32 IntSqrt(uint32 num)
|
||||
{
|
||||
uint32 res = 0;
|
||||
uint32 bit = 1UL << 30; // Second to top bit number.
|
||||
|
||||
/* 'bit' starts at the highest power of four <= the argument. */
|
||||
while (bit > num) bit >>= 2;
|
||||
|
||||
while (bit != 0) {
|
||||
if (num >= res + bit) {
|
||||
num -= res + bit;
|
||||
res = (res >> 1) + bit;
|
||||
} else {
|
||||
res >>= 1;
|
||||
}
|
||||
bit >>= 2;
|
||||
}
|
||||
|
||||
/* Arithmetic rounding to nearest integer. */
|
||||
if (num > res) res++;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
Reference in New Issue
Block a user