インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
浮動小数点式の評価で括弧を考慮して最適化するかどうかを指定します。
Linux* および macOS*: | -fprotect-parens -fno-protect-parens |
Windows*: | /Qprotect-parens /Qprotect-parens- |
なし
-fno-protect-parens |
式評価の順序で括弧は無視されます。 |
このオプションは、浮動小数点式の評価で括弧を考慮して最適化するかどうかを指定します。
-fprotect-parens (Linux* および macOS*) または /Qprotect-parens (Windows*) オプションを指定すると、括弧で指定された順序で式が評価されます。
-fno-protect-parens (Linux* および macOS*) または /Qprotect-parens- (Windows*) オプションを指定すると、より高速なコードを生成できる場合、浮動小数点式評価の順序で括弧は無視されます。
なし
次の式について考えてみます。
A+(B+C)
デフォルトでは、括弧は無視され、コンパイラーは、最適化レベルや -fp-model (Linux* および macOS*) または /fp (Windows*) オプションの設定などに応じて、より高速なコードを生成するように操作を並べ替えます。操作の順序が問題になるコード (一部の浮動小数点演算など) では、異なる結果を生成することがあります。
ただし、-fprotect-parens (Linux* および macOS*) または /Qprotect-parens (Windows*) を指定すると、浮動小数点式 (複素数浮動小数点と 10 進浮動小数点を含む) を囲む括弧が考慮され、通常の優先順位規則に従って式が評価されます。つまり、最初に B+C が計算され、その結果に A が足されます。
括弧を無視する場合と比べると、コードの実行速度は遅くなる可能性があります。浮動小数点の精度が問題になる場合は、-fp-model precise (Linux* および macOS*) または /fp:precise (Windows*) オプションを使用すべきです。このオプションは、精度に影響するすべての最適化を制御します。