是否有一个 GNU C 编译器选项可以生成运行速度更快但精度低于默认设置的浮点程序

Is there a GNU C compiler option that generate floating point programs that run faster but less precise than the default setting?

本文关键字:于默认 精度 默认 程序 设置 编译器 选项 GNU 有一个 速度 运行      更新时间:2023-10-16

我一直在寻找GNU C的选项,以便我的浮点程序可以生成比默认GNU设置生成的代码运行得更快(尽管精度较低)的代码。

假设我有一个程序my_fp_prog.c

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__

-Ofast之外,任何-O选项都不会打开此选项,因为它可能导致依赖于数学函数的 IEEE 或 ISO 规则/规范的精确实现的程序输出不正确。但是,它可能会为不需要这些规范保证的程序生成更快的代码。

相关文章: