Компилятор Fortran77 для обработки PI = 4.D0 * DATAN (1.D0) - PullRequest
0 голосов
/ 29 января 2010

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

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

Ответы [ 2 ]

1 голос
/ 29 января 2010

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

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

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

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

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

1 голос
/ 29 января 2010

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

...