Вопрос по – Предупреждение компилятора FORTRAN: устаревшее арифметическое выражение IF

0

У меня ошибка gfortran:

Warning: Obsolete: arithmetic IF statement at (1) 

Что это значит? В источнике (старый источник):

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

Ваш Ответ

3   ответа
0

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

& quot; Арифметическое IF считается вредным. & quot;

Ваше заявление,

if (s12 - 1.0) 13, 13, 12 является арифметическим IF, и считается плохим программированием.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Kuo-Hsien Chang
0

Википедия:

& quot; .. оператор Fortran определяет три разные ветви в зависимости от того, был ли результат выражения отрицательным, нулевым или положительным в указанном порядке ... & quot;

"... наконец был помечен как устаревший в Фортране 90".

0

это работает следующим образом.

 IF (expr) label1, label2, label3

Если значение выражения

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

В более новых стандартах FORTRAN эта функция устарела

В вашем коде вы можете заменить его на

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

Похожие вопросы