智能车制作

标题: 求K60上面快速开方算法 [打印本页]

作者: CQQ    时间: 2013-4-15 09:06
标题: 求K60上面快速开方算法

如题,
求大神给出方案
unsigned int sqrt_16(unsigned long M)  
{ unsigned int N, i; unsigned long tmp, ttp; // 结果、循环计数  
if (M == 0) // 被开方数,开方结果也为 0  
return 0; N = 0; tmp = (M >> 30); // 获取最高位:B[m-1] M <<= 2;
if (tmp > 1) // 最高位为 1
{  
N ++; // 结果当前位为 1,否则为默认的 0  
tmp -= N;  
}
for (i=15; i>0; i--) // 求剩余的 15位  
{  
N <<= 1; // 左移一位  
tmp <<= 2; tmp += (M >> 30); // 假设 ttp = N; ttp = (ttp<<1)+1; M <<= 2;
if (tmp >= ttp) // 假设成立  
{  
tmp -= ttp; N ++;  
}  
}  
return N;  
}

这个程序太慢了

作者: dapan945    时间: 2013-4-15 10:16
#include "math.h"
A = sqrt(B);
作者: CQQ    时间: 2013-4-15 13:39
dapan945 发表于 2013-4-15 10:16
#include "math.h"
A = sqrt(B);

那如何求InX呢?就是以e为底,求X的对数?

作者: 时光茶居    时间: 2013-4-15 14:10
#include "math.h"
A =log(X);
作者: dapan945    时间: 2013-4-15 15:57
我去你不会真让单片机去做这些东西吧
作者: CQQ    时间: 2013-4-15 16:49
dapan945 发表于 2013-4-15 15:57
我去你不会真让单片机去做这些东西吧

是的,我采集回来的数据经行处理,需要这些函数,好在
Cortex-M4F内核里面有这样的处理单元,可以很容易实现。


作者: 时光茶居    时间: 2013-4-16 09:34





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2