gpt4 book ai didi

multiplication - 采用交叉乘法的 32 位小数乘法(无 64 位中间结果)

转载 作者:行者123 更新时间:2023-12-02 19:47:16 24 4
gpt4 key购买 nike

我正在 16 位处理器上编写定点语音增强算法。有时我需要进行 32 位小数乘法。我读过其他关于逐字节进行 32 位乘法的文章,我明白为什么这适用于 Q0.31 格式。但我使用不同的 Q 格式和不同数量的小数位。

所以我发现对于小于 16 的小数位,这是有效的:

(low*low >> N) + low*high + high*low + (high*high << N)

其中 N 是小数位数。我读到 low*low 结果应该是无符号的,低字节本身也是如此。一般来说,这可以以任何少于 16 个小数位的 Q 格式准确给出我想要的结果。

现在,当小数位超过 16 时,情况会变得棘手。我已经尝试了几种移位次数,low*lowhigh*high 的不同移位我试图把它写在纸上,但我无法弄清楚。

我知道这可能非常简单,但整个想法让我困惑,我将不胜感激一些评论或指导!

最佳答案

这是相同的公式。对于 N > 16,移位仅意味着您丢弃整个 16 位字,这会导致上溢或下溢。 low*low >> N 表示仅将乘法的 32 位结果的高位字移位 N-16 位,然后与结果的低位字相加。 high * high << N 表示仅使用左移 N-16 的乘法结果的低位字并添加到结果的高位字。

关于multiplication - 采用交叉乘法的 32 位小数乘法(无 64 位中间结果),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14713674/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com