【发布时间】:2016-10-21 16:17:08
【问题描述】:
在 GCC 上,我们启用 -ffast-math 以加快浮点计算。但是由于我们依赖 NaN 和 Inf 浮点值的正确行为,我们也打开了-fno-finite-math-only,因此假设值不是 NaN/Inf 的优化
对于 MSVC,-ffast-math 的“等价物”显然是 /fp:fast。然而,就像 GCC 的 -ffast-math,它 also includes 假设 Nan/Inf 不存在的优化。 (重要的是,似乎 std::isnan() 之类的测试不能保证给出“准确”的结果。)
是否有 MSVC C++ 编译选项允许您利用大部分 /fp:fast 优化,但仍“正确”处理 NaN 和 Inf 值? (或者至少,保证像 std::isnan()/std::isinf() 这样的测试如果碰巧生成了 NaN/Inf。)
【问题讨论】:
-
您很可能找不到这样的开关。据我所知,添加到编译器的每个开关都会使 Microsoft 方面的测试工作加倍。这就是他们现在非常不愿意添加新开关的原因。
标签: c++ visual-c++ ieee-754