Microsoft Compaq Visual Fortran 6.6 を使用してコンパイルされていた Fortran プログラムで作業する必要があります。gfortran を使用したいのですが、多くの問題に遭遇しました。主な問題は、生成されたバイナリの動作が異なることです。私のプログラムは入力ファイルを受け取り、出力ファイルを生成する必要があります。しかし、gfortran でコンパイルされたバイナリを使用すると、終了前にクラッシュしたり、異なる数値結果が得られることがあります。これは、浮動小数点数を多く使用する研究者によって作成されたプログラムです。
私の質問は、この種の問題につながる可能性のあるこれら 2 つのコンパイラの違いは何ですか?
編集:私のプログラムはいくつかのパラメータの値を計算し、多数の反復があります。最初は、すべてがうまくいきます。数回繰り返した後、いくつかの NaN 値が表示されます (gfortran でコンパイルした場合のみ)。
編集:皆さんの答えを考えてください。そこで、有用なエラー メッセージを表示してくれるインテル コンパイラを使用しました。私の問題の原因は、一部の変数が正しく初期化されていないことです。Compaq Visual Fortran でコンパイルすると、これらの変数は値として自動的に 0 を取るように見えますが、gfortran (および intel) ではランダムな値を取るため、次の反復で加算されるいくつかの数値の違いが説明されます。したがって、解決策は、プログラムをよりよく理解して、これらの不足している初期化を修正することです。