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)

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top