首页 > 代码库 > 高效率开平方算法

高效率开平方算法

 1 UINT sqrt(long m) 2 { 3  4     BYTE i,j; 5     UINT z,temp0,temp1; 6     long x,y; 7     x = 1; 8  9     for(j =0;j<16;j++)10     {11         x <<= 2;12         if(m<x)13             break;14     }15     x = y =1;16     x <<=2*j;17     y = x<<1;18 19     z = 0;20     temp0 = 0;21     for(i=0;i<=j;i++)22     {23         z <<= 1;24         temp0 <<= 2;25         if(m&x)26             temp0++;27         if(m&y)28             temp0 += 0x02;29         m <<= 2;30         temp1  = z;31         temp1 = (temp1<<1) + 1;32         if(temp1<=temp0)33         {34             temp0 -=temp1; 35             z++;36         }37     }38 39     return z;    40 41 }

算法原理不是很清楚,但确实管用,开平方的值只精确到个位,误差最大为1。哪位大神明白的给指点下。