Вот небольшой фрагмент кода, который возвращает epsilon () для реального значения:
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 на
if (1.0+eps==1.0) then
программа должна иметь то же самое взамен, но, к сожалению, этого не происходит! Я протестировал его с последней версией (снимка) g95 для Linux и Windows.
Может кто-нибудь объяснить мне эту проблему?