我一直在寻找GNU C的一个选项,以便我的浮点程序可以生成比默认GNU设置生成的代码运行速度更快但精度更低的代码。
假设我有一个程序我的程序

double sqrt_two(return sqrt(2));

虽然精确的答案应该是1.414….,但我只需要答案1.4,甚至1.5或1.3就可以了,但我需要一个更快的程序。当然,我们使用一个更便宜的sqrt算法,但我要寻找的是一个编译器选项来完成这项工作。希望有这样的选择。

最佳答案

从GCC手册页:
-ffast-math
设置-fno-math-errno-funsafe-math-optimizations-ffinite-math-only-fno-rounding-math-fno-signaling-nans-fcx-limited-range
此选项将定义预处理器宏__FAST_MATH__
除了-O之外,任何-Ofast选项都不会启用此选项,因为它可能导致程序的错误输出,这些程序依赖于数学函数的IEEE或ISO规则/规范的精确实现。但是,对于不需要这些规范保证的程序,它可能会产生更快的代码。

09-25 17:46
查看更多