189

gcc の--ffast-mathフラグが浮動小数点演算の速度を大幅に向上させ、IEEE 標準の範囲外になることは理解していますが、オンのときに実際に何が起こっているかについての情報を見つけることができないようです。誰か詳細を説明して、フラグがオンまたはオフの場合に何かがどのように変化するかの明確な例を教えてください。

同様の質問についてSOを掘り下げてみましたが、ffast-mathの仕組みを説明するものは見つかりませんでした。

4

2 に答える 2

116

おっしゃるとおり、厳密な IEEE 準拠を維持しない最適化が可能になります。

例はこれです:

x = x*x*x*x*x*x*x*x;

x *= x;
x *= x;
x *= x;

浮動小数点演算は結合的ではないため、演算の順序付けと因数分解は丸めにより結果に影響します。したがって、この最適化は厳密な FP 動作では実行されません。

GCC が実際にこの特定の最適化を行うかどうかは、実際には確認していません。しかし、考え方は同じです。

于 2011-09-14T17:51:02.650 に答える