Calculate the integral part of a square root using bit operations
#define BITSPERINTEGER 32
#define TOP2BITS(x) (x>>30)
unsigned int isqrt (unsigned int x)
{
int i;
unsigned int a = 0, e = 0, r = 0;
for (i=0; i < (BITSPERLONG >> 1); i++)
{
r <<= 2;
r += TOP2BITS(x);
x <<= 2;
a <<= 1;
e = (a<<1) | 1;
if (r >= e)
{
r -= e;
a++;
}
}
return a;
}