整数平方根算法

来源:互联网 发布:shadowsock mac不能用 编辑:程序博客网 时间:2024/05/15 10:34

这几天在作dsp程序的时候用到的,感觉还不错

V_UINT32 VSqrt3( V_UINT32 x )  //牛顿法
{
 V_UINT32 x1;
 int s = 1, g0,g1;
 if (x <= 1)  return x;
 x1 = x - 1;
 if ( x1 > 65535 )
 {
  s += 8;
  x1 >>= 16;
 }
 if ( x1 > 255 )
 {
  s += 4;
  x1 >>= 8;
 }
 if ( x1 > 15 )
 {
  s += 2;
  x1 >>= 4;
 }
 if ( x1 > 3 )
 {
  s += 1;
 }

 g0 = 1 << s;
 g1 = ( g0 + ( x >> s ) ) >> 1;

 while ( g1 < g0 ) {
  g0 = g1;
  g1 = ( g0 + x/g0 ) >> 1;
 }
 return g0;
}

原创粉丝点击