我試圖檢查某些行有多少次在幾分鐘的時間步執行的,這裏是我的代碼部分: 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