本帖最后由 灞波儿奔 于 2019-12-7 23:04 编辑
//===============================================
//函数名:VSqrt3
//功能: 实现对32位定点数的开方
//性能: 60M主频28015硬件下运行时间小于10us
unsigned long VSqrt3(unsigned long x )
{
unsigned long x1;
int s=1;
unsigned long 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;
g0=g0<<s;
g1 =(g0 +(x>>s))>>1;
while(g1
{
g0=g1;
g1=(g0+x/g0)>>1;
}
return g0;
}
//=============================================== //
|