*}
codea teams

Integer Square Root



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;
}