我可以在文档中找到的所有信息和仅用于-ffinite-math的web是“允许优化浮点运算,假设参数和结果不是NaN或+ -Infs”。这对我来说似乎没有。有没有人确切地知道那些那些优化是什么? 感谢
答案 0 :(得分:8)
在这个假设下可以优化很多小东西,例如:
x == x
- > 1
x * 1
- > x
x >= y
- &gt; !(x < y)
和类似的。x/x
- &gt; 1
如果编译器可以证明x != 0
。x > y ? x : y
等表达式使用硬件最大/最小指令。你经常会看到这个假设以及“零符号无关紧要”之类的假设,然后允许这样的事情:
x - x
- &gt; 0
0 / x
- &gt; 0
x * 0
- &gt; 0