一位朋友遇到了一个问题,一段代码用ifort编译,运行没有问题,但是用gfortran编译出现了问题。感觉有那么点意思,就去检查了下,发现是初始化的问题。
gfortran在生成real*8类型的数组时,即使显示的去初始化,并不是默认的全是0,有一小部分数据是很小很小的非零数据,还有很小几率是NaN。上网得知在一些如0/0的计算和以z开头的常量会得到NaN。解决办法是加入-finit-real=nan选项,这样生成的数组就全是NaN。然后再赋值为0就是全是0了。
一位朋友遇到了一个问题,一段代码用ifort编译,运行没有问题,但是用gfortran编译出现了问题。感觉有那么点意思,就去检查了下,发现是初始化的问题。
gfortran在生成real*8类型的数组时,即使显示的去初始化,并不是默认的全是0,有一小部分数据是很小很小的非零数据,还有很小几率是NaN。上网得知在一些如0/0的计算和以z开头的常量会得到NaN。解决办法是加入-finit-real=nan选项,这样生成的数组就全是NaN。然后再赋值为0就是全是0了。