浮動小数点最適化の設定を選択します。
オプティマイザが浮動小数点演算に関する前提を単純化できるようにします。『Fortran プログラミングガイド』の「浮動小数点演算」の章を参照してください。
一貫した結果を得るには、プログラム中のすべての副プログラムを同じ -fsimple オプションを付けてコンパイルする必要があります。
デフォルトは次のとおりです。
-fsimple フラグが指定されていない場合、コンパイラは -fsimple=0 とみなします。
値なしで -fsimple が指定されている場合、コンパイラは -fsimple=1 を使用します。
別の浮動小数点単純化レベルは次のとおりです。
仮定の設定を許可しません。IEEE 754 に厳密に準拠します。
若干の単純化を認めます。生成されるコードは IEEE 754 に厳密には準拠していませんが、大半のプログラムの数値結果は変わりありません。
-fsimple=1 の場合、次に示す内容を前提とした最適化が行われます。
IEEE 754 のデフォルトの丸めとトラップモードが、プロセスの初期化以後も変わらない。
浮動小数点例外以外には、目に見える結果が生じない演算は削除できる。
演算対象として無限または非数を伴う演算において、非数を結果に反映させる必要はない。たとえば、x*0 は 0 で置き換えてよい。
-fsimple=1 を指定すると、オプティマイザは必ず丸めまたは例外に応じた、完全な最適化を行います。特に、浮動小数点演算を、実行時に一定に保たれる丸めモードにおいて異なる結果を生成する浮動小数点演算と置き換えることはできません。
—fsimple=1 に加えて、積極的な浮動小数点の最適化を許可します。このため、一部のプログラムは、数式の評価方法の変更が原因で、異なる数値結果を出すことがあります。特に、Fortran の標準規則は、部分式の明示的な括弧を重視して式の評価の配列を制御するため、-fsimple=2 によって違反が生じることがあります。その結果、Fortran の規則に依存するプログラムにおいて、数値の丸めに差異が生じる可能性があります。
たとえば、-fsimple=2 を使用すると、コンパイラは C-(A-B) を (C-A)+B として評価するため、最終的なコードがより良好に最適化されている場合、明示的な括弧について標準規則の違反が生じます。また、コンパイラは、x/y の反復演算を x*z で置き換えることがあります。この場合、z=1/y が 1 回だけ計算されて一時的に保存されるため、コストのかかる割り算が除去されます。
浮動小数点演算の特定プロパティーに依存するプログラムは、-fsimple=2 でコンパイルしないでください。
ただし、-fsimple=2 を指定していても、-fsimple=2 を指定しなければ発生しない浮動小数点例外をプログラムに発生させるような最適化はできません。
-fast は -fsimple=2 を選択します。