Pregunta sobre gfortran – Advertencia del compilador de FORTRAN: aritmética obsoleta instrucción IF

0

Tengo un error de gfortran:

Warning: Obsolete: arithmetic IF statement at (1) 

¿Qué significa esto? En la fuente (fuente antigua):

66 s12 = max(epsilon, s1 + s2)
c Then execution will go to label 13. Will this stop any further problems?
if (s12 - 1.0) 13, 13, 12
13 z = s1 / s12

Tu respuesta

3   la respuesta
0

Chequea aquí:

http://www.ibiblio.org/pub/languages/fortran/ch1-5.html

"La FI aritmética se considera dañina".

Su declaración,

if (s12 - 1.0) 13, 13, 12 Es un FI aritmético, y se considera mala programación.

Gracias por el enlace. Los cambié a la expresión regular. if (s12 - 1.0 .LT. 0) luego GOTO 13 else if (s12 - 1.0 .EQ. 0) luego GOTO 13 elseif (s12 - 1.0 .GT. 0) entonces GOTO 12 endif Kuo-Hsien Chang
Recuerde elegir haciendo clic en la marca de verificación junto a una de las respuestas aquí, si de hecho responde a su pregunta. Por supuesto, no hay nada de malo en no marcar uno si ninguno de ellos responde lo suficientemente bien. Almo
0

Wikipedia:

"... la declaración de Fortran define tres ramas diferentes dependiendo de si el resultado de una expresión fue negativo, cero o positivo, en dicho orden ..."

"..fue finalmente etiquetado como adolescente en Fortran 90."

0

Aritmética si es una característica peculiar de FORTRAN.

funciona de la siguiente manera.

 IF (expr) label1, label2, label3

Si el valor de la expresión es

less than 0, jump to label1 
equal to 0, jump to label2
greater than 0, jump to label3

En los nuevos estándares de FORTRAN esta característica es obsoleta

En tu código puedes reemplazarlo con

      IF (s12 - 1.0 .gt. 0 ) GOTO 12
13    z = s1 / s12

Preguntas relacionadas