我有一个函数、用于对具有大整数的_iq18类型进行多项运算。 我需要结果的整数部分和小数部分进行后续计算。 当前代码如下所示:
int32计数= 320000; _iq18分频器=_IQ (0.667); int32 intResult =_IQ18mpyI32int (分频器、计数); _iq18余数=_IQ18mpyI32frac (分频器、计数);
根据 IQ 库上的文档、_IQNmpyI32int()和 _IQNmpyI32frac()每个都需要20个周期才能完成。 此代码位于持续重复的紧密循环中、因此我想尽可能减少执行周期的数量。 是否有任何方法来优化此代码? 我怀疑 _IQNmpyI32int()和 _IQNmpyI32frac()正在执行非常相似的计算;因此,如果有一些余地,我可以将它们"组合",我觉得我可以压缩一点 CPU 时间。
我想使用 plain _IQNmpyI32(),然后从结果中提取整数和小数分量。 `、`s计数`通常计算为一个非常大的数字、因此`计数`和`计算器的乘积将超过_IQ18类型的范围。