Domanda

Qui un piccolo frammento di codice che restituisce Epsilon () per un valore reale:

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

Ora, quando sostituisco la condizione if da

   if (1.0+eps==1.0) then

Il programma dovrebbe avere lo stesso in cambio, ma purtroppo no! L'ho testato con l'ultima versione (istantanea) di G95 su Linux e Windows.

Qualcuno può spiegarmi quel problema?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top