[KungFu32位 MCU] KF32A使用IQmath求平方根,一次时间约10us,求教有没有更快速的方法?

[复制链接]
 楼主| qihw 发表于 2021-7-12 15:50 | 显示全部楼层 |阅读模式
请教开平方快速方法
fuqinyyy 发表于 2021-7-12 21:05 来自手机 | 显示全部楼层
查找表法
lidi911 发表于 2021-7-13 08:23 来自手机 | 显示全部楼层
查表法
airwill 发表于 2021-7-16 11:01 | 显示全部楼层
这个恐怕查表不好处理,  什么表那么大容量?
精确计算常用的有 二分法、牛顿迭代法

依本人不完全经验,  IQMath 库的性能非常高了,  如果没有充足的时间,  先不用去折腾这样的细节
里面有晴雨 发表于 2021-7-16 11:47 | 显示全部楼层
只能使用查表法,不然搞不定的。
airwill 发表于 2021-7-16 21:48 | 显示全部楼层
没有看到 KF32A 如何使用IQmath 的方法.  
里面有晴雨 发表于 2021-7-17 08:47 | 显示全部楼层
这个好像没有看到IQmath的方法。
gygp 发表于 2021-8-2 13:27 | 显示全部楼层
调用自带的子程序?   
chenci2013 发表于 2021-8-2 13:27 | 显示全部楼层
软件自带算法是用浮点数类型来计算的?  
biechedan 发表于 2021-8-2 13:27 | 显示全部楼层
自己写代码平方根将会大大提高计算效率
wangdezhi 发表于 2021-8-2 13:27 | 显示全部楼层
这个官网代码呢?      
isseed 发表于 2021-8-2 13:27 | 显示全部楼层
static unsigned long sqrt(unsigned long x)
{
  register unsigned long xr;  // result register
  register unsigned long q2;  // scan-bit register
  register unsigned char f;   // flag (one bit)

  xr = 0;                     // clear result
  q2 = 0x40000000L;           // higest possible result bit
  do
  {
    if((xr + q2) <= x)
    {
      x -= xr + q2;
      f = 1;                  // set flag
    }
    else{
      f = 0;                  // clear flag
    }
    xr >>= 1;
    if(f){
      xr += q2;               // test flag
    }
  } while(q2 >>= 2);          // shift twice
  if(xr < x){
    return xr +1;             // add for rounding
  }
  else{
    return xr;
   }
}

xietingfeng 发表于 2021-8-2 13:27 | 显示全部楼层
使用汇编语言吧。           
suzhanhua 发表于 2021-8-2 13:28 | 显示全部楼层
不用来计算三角函数时候,用来计算乘积运算
mituzu 发表于 2021-8-2 13:28 | 显示全部楼层
math库函数计算速度为34k/s
hellosdc 发表于 2021-8-2 13:28 | 显示全部楼层
最优的执行速度和高精度是至关重要的  
uiint 发表于 2021-8-2 13:28 | 显示全部楼层
使用IQmath库   
gygp 发表于 2021-8-2 13:28 | 显示全部楼层
将浮点数转化为整数计算,然后再将整数转为浮点数。
chenci2013 发表于 2021-8-2 13:29 | 显示全部楼层
使用过程中合数选和定义IQ变量,获得更好的计算性能。
biechedan 发表于 2021-8-2 13:29 | 显示全部楼层
不使用IQmath吗        
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

5

帖子

0

粉丝
快速回复 返回顶部 返回列表