Обработка компилятором Fortran77 значения PI=4.D0*DATAN(1.D0)

StackOverflow https://stackoverflow.com/questions/2162461

  •  23-09-2019
  •  | 
  •  

Вопрос

При использовании следующего для вычисления PI в fortran77, будет ли компилятор вычислять это значение или оно будет вычислено во время выполнения?

PI=4.D0*DATAN(1.D0)

Это было полезно?

Решение

Редактировать:зависит от компилятора:смотрите мою ПРАВКУ ниже. РЕДАКТИРОВАТЬ КОНЕЦ

я поддерживаю предложение Мика Шарпа о том, что оно будет оценено во время выполнения.просто из любопытства я собрал PI=4.D0*DATAN(1.D0) с Компилятор Silverfrost ftn77 от Silverfrost и посмотрел на сгенерированный двоичный файл.соответствующая часть выглядит следующим образом:

fld1                 ; push 1.D0 onto the FPU register stack
call    ATAN_X
fmul    dbl_404000   ; multiply by 4.D0

так что действительно, никакой сообразительности компилятора здесь нет.

это, конечно, может отличаться с другим компилятором (например.группа 77). Редактировать:по-видимому, с g77 (интерфейс fortran77 для gcc) возможно (и включено по умолчанию) использовать gcc встроенная функция atan Для автоматическое складывание PI=4.D0*DATAN(1.D0) в постоянную. РЕДАКТИРОВАТЬ КОНЕЦ

Другие советы

Вызовы математических функций обычно оцениваются во время выполнения.В конце концов, ничто не мешает вам писать свои собственные математические функции.Это было бы невозможно, если бы они оценивались во время компиляции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top