Tratamento do compilador fortran77 de pi = 4.d0*datan (1.d0)
Pergunta
Ao usar o seguinte para calcular o PI no Fortran77, o compilador avaliará esse valor ou será avaliado no tempo de execução?
Pi = 4.d0*datan (1.d0)
Solução
EDITAR: Depende do compilador: veja minha edição abaixo. Editar fim
Segundo a sugestão de Mick Sharpe de que ela será avaliada em tempo de execução. Só por curiosidade, eu compilei PI=4.D0*DATAN(1.D0)
com Compilador FTN77 da Silverfrost e olhou para o binário gerado. A parte relevante parece assim:
fld1 ; push 1.D0 onto the FPU register stack
call ATAN_X
fmul dbl_404000 ; multiply by 4.D0
Então, de fato, não há inteligência do compilador aqui.
É claro que isso pode ser diferente com outro compilador (por exemplo, G77). EDITAR: Aparentemente, com G77 (o front-end do Fortran77 para o GCC) é possível (e ativado por padrão) usar o GCC's Função ATAN embutida para dobra automática PI=4.D0*DATAN(1.D0)
em uma constante. Editar fim
Outras dicas
As chamadas para as funções matemáticas são normalmente avaliadas no tempo de execução. Afinal, não há nada para impedi -lo de escrever suas próprias funções de matemática. Isso não seria possível se fossem avaliados no momento da compilação.