weixin 发表于 2024-5-20 08:45:39

大佬们有没有缩短“根号”运算的办法

我在中断里使用了根号运算,一看中断时间80us,注释掉后就几us。


                        Va_1=Va-2.4617985;
                        
                        
                        x_pn=x_n;
                        
                        
                        y_pn=y_n;
                        
                        
                        x_n=Va_1*Va_1;
                        
                        
                        y_n = IIR_B*x_n + IIR_B*x_pn- IIR_A*y_pn;
                        
                        
                        a=1.4142*sqrt(y_n)*0.906+2.4617985;

乘风飞扬 发表于 2024-5-20 10:55:44

STC8051U, 2024/7/1供货
TFPU32@108MHz, 以
【硬件三角函数/反三角函数运算器,硬件浮点运算器】为主的
【新型 控制器,处理器】
T: 硬件三角函数/反三角函数运算器
F: 硬件浮点运算器





追风剑-II@STC8051USB实验箱讨论稿,8位/32位8051兼容,三角函数/浮点, USB - 老梁亲测 STC33-ARM 内部平台系列讲座 国芯技术交流网站 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)


Snapdragon 发表于 2024-5-20 11:05:59

{:5_286:}正常,软件浮点运算消耗的时间确实很长

Snapdragon 发表于 2024-5-20 11:17:18

如果不需要高精度的话,可以百度下有没有快速开方运算的办法

xiangzichen 发表于 2024-5-20 11:36:06

本帖最后由 xiangzichen 于 2024-5-20 11:55 编辑

试试卡马克大神的神级代码,快速迭代开平方.

float SquareRootFloat(float number) {   
    long i;   
    float x, y;   
    const float f = 1.5F;   
    x = number * 0.5F;   
    y= number;   
    i= * ( long * ) &y;   
    i= 0x5f3759df - ( i >> 1 ); //注意这一行   
    y= * ( float * ) &i;   
    y= y * ( f - ( x * y * y ) );   
    y= y * ( f - ( x * y * y ) );   //提高精度就来一次.
    return number * y;
}

wangxiangtan 发表于 2024-5-20 14:23:04

xiangzichen 发表于 2024-5-20 11:36
试试卡马克大神的神级代码,快速迭代开平方.

传世经典:0x5f3759df

weixin 发表于 2024-5-20 15:29:40

xiangzichen 发表于 2024-5-20 11:36
试试卡马克大神的神级代码,快速迭代开平方.

好的,我试试,谢谢大佬

soma 发表于 2024-5-20 15:33:12

雷神之锤0x5f3759df

jwd 发表于 2024-5-20 15:59:03

xiangzichen 发表于 2024-5-20 11:36
试试卡马克大神的神级代码,快速迭代开平方.

{:4_250:}
页: [1]
查看完整版本: 大佬们有没有缩短“根号”运算的办法