我必須使用Fortran程序,該程序曾經使用Microsoft Compaq Visual Fortran 6.6進行編譯。我寧願與gfortran一起工作,但我遇到了很多問題。 主要問題是生成的二進制文件具有不同的行爲。我的程序需要一個輸入文件,然後必須生成一個輸出文件。但有時候,當使用gfortran編譯的二進制文件時,它會在結束之前崩潰,或者給出不同的數值結果。 這是一個由研究人員使用大量浮點數編寫的程序。Fortran:使用兩種不同的編譯器編譯生成的代碼之間的差異
所以我的問題是:這兩種編譯器之間可能導致這種問題的區別是什麼?
編輯: 我的程序計算了一些參數的值,並且有很多迭代。一開始,一切都很順利。經過多次迭代後,出現了一些NaN值(僅當由gfortran編譯時)。
編輯: 想你大家的答案。 所以我使用了intel編譯器,它通過提供一些有用的錯誤消息來幫助我。 我的問題的起源是一些變量沒有正確初始化。它看起來像使用compaq visual fortran進行編譯時,這些變量將自動將0作爲值,而對於gfortran(和intel),它會使用隨機值,這解釋了在以下迭代中累加的一些數字差異。 所以現在解決方案是更好地理解程序來糾正這些缺失的初始化。
S.B.是否真的有理由使用單精度浮點數? – 2011-02-11 00:50:17