手写定点运算和IQmath定点运算性能比较

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

手写定点运算和IQmath定点运算性能比较
罗海风
2013.5.8
工作内容
比较手写定点运算和IQmath定点运算的性能。

发现IQmath运算速度不及手写的定点代码(2013.5.10补充:此结论错误。

后经反复验证,IQmath方法运算速度与手写的定点代码运算速度相当!)。

但是IQmath在三角函数等特殊数学运算方面作用较大,也可用于对一般加减乘除的数学运算提供一种简单方便统一的处理接口。

具体比较细节
情况1:浮点定点转换
手动定点:ivalue = (int)(0.114*4096);(2013.5.10补充:此公式有误,会带来误差。

与_FtoIQ等价的公式应为ivalue = (int)(0.114*4096+0.5);采用等价公式后,两种定点方法耗时相等)
IQmath定点:ivalue = _FtoIQ(0.114);
此运算情况下,两种方法比较如下:
因此,浮定点转换中,手写定点方法要优于IQmath方法。

情况2:定点乘法运算
手动定点:ivalue = _mpy(333,444); (2013.5.10补充:此公式有误,仅为16位乘法。

与_ IQmpy等价的公式应为ivalue = _mpy32(333,444)>>GOBAL_Q;采用等价的32位乘法公式后,两种定点方法耗时相等)
IQmath定点:ivalue = _IQmpy(333,444);
此运算情况下,两种方法比较如下:
因此,定点乘法中,手东定点方法要优于IQmath方法。

情况3:三角函数运算
手动无法修改成定点: e = 1.57;
d = sin(e);
IQmath定点:a = _FtoIQ(1.57);
c = _IQsin(a);
d = _IQtoF(c);
因此,遇到三角函数时,需要用到IQmath函数进行处理。

相关文档
最新文档