首页 > 代码库 > 高效率开平方算法
高效率开平方算法
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。哪位大神明白的给指点下。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。