A.2.27 –fsimple[= n]
浮動小数点最適化の設定を選択します。
このオプションで浮動小数点演算に影響する前提を設けることにより、オプティマイザで行う浮動小数点演算が簡略化されます。
A.2.27.1 値
n を指定する場合、0、1、2 のいずれかにしなければいけません。
表 A–13
-fsimple の値
値
|
意味
|
0
|
仮定の設定を許可しません。IEEE 754 に厳密に準拠します。
|
1
|
安全な簡略化を行います。生成されるコードは IEEE 754 に厳密には準拠していませんが、大半のプログラムの数値結果は変わりありません。
-fsimple=1 の場合、次に示す内容を前提とした最適化が行われます。
-
IEEE 754 のデフォルトの丸めとトラップモードが、プロセスの初期化以後も変わらない。
-
起こり得る浮動小数点例外を除き、目に見えない結果を出す演算が削除される可能性がある。
-
無限大数または非数をオペランドとする演算は、その結果に非数を伝える必要がある。x*0 は 0 によって置き換えられる可能性がある。
-
演算はゼロの符号を区別しない。
-fsimple=1 の場合、四捨五入や例外を考慮せずに完全な最適化を行うことは許可されていません。特に浮動小数点演算は、丸めモードを保持した定数について実行時に異なった結果を出す演算に置き換えることはできません。
|
2
|
-fsimple=1 のすべての機能に加えて、浮動小数点演算の最適化を積極的に行い、丸めモードの変更によって多くのプログラムが異なった数値結果を出すようになります。たとえば、あるループ内の x/y の演算をすべて x*z に置き換えるような最適化を許可します。この最適化では、x/y はループ z=1/y 内で少なくとも 1 回評価されることが保証されており、y と z にはループの実行中に定数値が割り当てられます。
|
デフォルト
-fsimple を指定しないと、コンパイラーは -fsimple=0 を使用します。
-fsimple を指定しても n の値を指定しないと、-fsimple=1 が使用されます。
相互の関連性
-fast は -fsimple=2 を意味します。
警告
このオプションによって、IEEE 754 に対する適合性が損なわれることがあります。
関連項目
-fast
最適化が精度に与える影響の詳細は、『Techniques for Optimizing Applications: High Performance Computing』(Rajat Garg、Ilya Sharapov 共著) をお読みください。