我试图检查某些行有多少次在几分钟的时间步执行的,这里是我的代码部分: 1)写“COUNT天”每次:与比较整数很奇怪FORTRAN错误
real(kind=8) function dergfm(jp,ip,lp)
integer :: jp,ip,lp,countd
real(kind=8) press
.
.
.
countd=countd+1
!if (countd < 5) then
print*, "countd= ", countd
!endif
.
.
.
end function dergfm
结果:
countd= 1
.
.
.
countd= 21504
2)写上 “COUNT天” 第一4次:
real(kind=8) function dergfm(jp,ip,lp)
integer :: jp,ip,lp,countd
real(kind=8) press
.
.
.
countd=countd+1
if (countd < 5) then
print*, "countd= ", countd
endif
.
.
.
end function dergfm
结果:
countd= 1
countd= 2
countd= 3
countd= 4
3)写 “COUNT天” 大于5个
real(kind=8) function dergfm(jp,ip,lp)
integer :: jp,ip,lp,countd
real(kind=8) press
.
.
.
countd=countd+1
if (countd > 5) then
print*, "countd= ", countd
endif
.
.
.
end function dergfm
结果:
[none]
看起来比较这些整数工程.LT。但不适用于.gt。 (也就是说)
您确定输入和所有全局变量对于每次运行都是相同的吗?如果是这样,看起来你已经碰到了一些非常奇怪和错误的东西。但是,为了演示,你必须令人信服地表明其他一切都没有改变。如果你忽略了用点表示的材料,毫无疑问它能正确执行。您需要保存当前的测试用例,然后将代码量减少到最小,仍然会重现问题。然后将错误报告提交给编译器供应商。 (裸露的最小值应该是50行或更少,只是为了给你一个目标。) – 2011-01-05 13:51:30
@J。 Leffler:虽然编译器错误当然是可能的,但在99.9%的情况下,罪魁祸首是在用户代码中,例如,在这种情况下,某些数组边界错误会被计数。或者我们看不到的其他东西,因为它隐藏在“...”部分后面,OP不想分享。 – janneb 2011-01-05 14:59:46
感谢所有的答案,我将检查您的建议,我没有发布代码,因为它是非常广泛的(100k +行)计算代码。最令我震惊的是<作品但不是>或== – madness 2011-01-10 09:24:03