gpt4 book ai didi

c++ - gnuradio 中的浮点运算

转载 作者:行者123 更新时间:2023-11-30 05:05:37 25 4
gpt4 key购买 nike

我试图理解 GNURadio 中的浮点运算并开始研究他们的测试。测试生成随机浮点输入和随机抽头,然后将所有内容传递给过滤器。稍后它使用一些余量比较预期输出和实际输出。

关于那个有一个神秘的评论margin :

    // we use a sloppy error margin because on the x86 architecture,
// our reference implementation is using 80 bit floating point
// arithmetic, while the SSE version is using 32 bit float point
// arithmetic.

我在源代码中找不到任何 80 位算法。谁能帮我?或者只是解释为什么误差幅度取决于抽头尺寸?

最佳答案

在 x86+87 上甚至简单地使用 double中间结果的精度为 80 位,因为 FPU 堆栈在内部使用 80 位 float 。

如果您的代码期望并依赖于 64 位或 32 位 float 学的舍入,您可能会大吃一惊。

例如,我曾多次被类似 x < y 之类的东西击中为真但在分配 z = x 之后你可能会得到 z >= y (所有变量都声明为 double )。如果 x 可能会发生这种情况最终被分配到一个 80 位 FPU 寄存器和 z取而代之的是内存中真正的 64 位浮点变量。

g++ 有一个特定的选项来避免这些问题 ( -ffloat-store ),它可以防止使用额外的位(但是会大大降低数学密集型代码的速度)。

关于c++ - gnuradio 中的浮点运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48254778/

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