我必须使用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