2
這裏的代碼,對於一個真實值返回的ε-()一個小片段:的Fortran 95:直列評價如果條件
program epstest
real :: eps=1.0, d
do
d=1.0+eps
if (d==1.0) then
eps=eps*2
exit
else
eps=eps/2
end if
end do
write(*,*) eps, epsilon(d)
pause
end program
現在,當我通過
if (1.0+eps==1.0) then
更換如果條件
該程序應該有相同的回報,但不幸的是它不!我在Linux和Windows上使用g95的最新(快照)發行版進行了測試。
有人可以向我解釋這個問題嗎?
謝謝M.S.B.! 我知道這些內在功能,如epsilon(),但我想這個程序是爲了向我展示你剛剛澄清的內容:內聯評估可能會導致錯誤的結果。 – mikemike 2011-02-06 23:55:42