バックグラウンド:
何年も前に、Visual Studio (VC++) フラグ '/fp:fast' を使用して特定の計算量の多いライブラリでより高速なコードを生成するコードベースを継承しました。残念ながら、'/fp:fast' は、別のコンパイラ (Borland C++) の下で同じライブラリとわずかに異なる結果を生成しました。まったく同じ結果を出す必要があったので、'/fp:precise' に切り替えました。ただし、現在、uBuntu Linux 10.04 で g++ を使用して同じライブラリをコンパイルしていて、同様の動作が見られます。同様の根本原因があるのではないかと考えています。g++ ビルドの数値結果は、VC++ ビルドの数値結果とは少し異なります。これは私の質問に私をもたらします:
質問:
g++ には、VC++ の 'fp:fast' および 'fp:precise' オプションと同等または類似のパラメーターがありますか? (そしてそれらは何ですか? 'fp:precise' に相当するものを有効にしたいのです。)
詳細情報:
g++ を呼び出す「make」を使用してコンパイルします。私が知る限り (make ファイルは少し不可解で、私が書いたものではありません) g++ 呼び出しに追加される唯一のパラメーターは、「通常の」パラメーター (フォルダーとコンパイルするファイルを含める) と -fPIC (このスイッチが何をするのかよくわかりません。'man' ページには表示されません)。
「man g++」の唯一の関連パラメーターは、最適化オプションをオンにするためのもののようです。(例: -funsafe-math-optimizations)。ただし、何かをオンにしているわけではなく、関連する最適化をオフにしたいだけです。
リリース ビルドとデバッグ ビルドを試しましたが、VC++ ではリリースとデバッグで同じ結果が得られ、g++ ではリリースとデバッグで同じ結果が得られますが、g++ バージョンで VC++ バージョンと同じ結果を得ることができません。