相关疑难解决方法(0)

gcc的ffast-math实际上做了什么?

我理解gcc的--ffast-math标志可以大大提高浮动操作的速度,并超出IEEE标准,但我似乎无法找到有关它正在发生的事情的信息.任何人都可以解释一些细节,并可能给出一个明确的例子,说明如果标志开启或关闭会有什么变化?

我确实尝试过挖掘SO以寻找类似的问题,但却找不到任何解释ffast-math工作原理的东西.

math floating-point performance gcc fast-math

138
推荐指数
2
解决办法
5万
查看次数

clang 14.0.0 浮点优化

我正在执行这个问题的代码:为什么以下代码的输出不为零?

#include <stdio.h>

int main (void)
{
    double A = 373737.0;
    double B;

    B = A*A*A + 0.37/A - A*A*A - 0.37/A;
    printf("The value of B is %f.\n", B);
}
Run Code Online (Sandbox Code Playgroud)

每个主流 x86 编译器的每个优化设置都会给出输出-0.000001。当我使用当前的 clang 15.0.0 时,我-O0也得到了这一点。

但是,使用 14.0.0 版本以上的 clang 和-O1to进行编译-O3会给出输出-1.000001。为什么会发生这种情况?这是一个已知的错误?

Godbolt 为了您的方便:https ://godbolt.org/z/M5j3fGhWf

c floating-point optimization clang

9
推荐指数
1
解决办法
1070
查看次数

标签 统计

floating-point ×2

c ×1

clang ×1

fast-math ×1

gcc ×1

math ×1

optimization ×1

performance ×1