Fortran77编译器处理PI = 4.D0 * DATAN(1.D0)

时间:2010-01-29 14:19:46

标签: fortran77 pi

使用以下方法在fortran77中计算PI时,编译器会评估此值还是在运行时进行评估?

  

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

2 个答案:

答案 0 :(得分:1)

通常在运行时评估对数学函数的调用。毕竟,没有什么可以阻止你编写自己的数学函数。如果在编译时对它们进行评估,则无法做到这一点。

答案 1 :(得分:1)

编辑:取决于编译器:请参阅下面的编辑。 编辑结束

我是第二个Mick Sharpe的建议,它将在运行时进行评估。出于好奇,我用Silverfrost's ftn77 compiler编译PI=4.D0*DATAN(1.D0)并查看生成的二进制文件。相关部分如下:

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

确实,这里没有编译器聪明。

这当然可能与另一个编译器(例如g77)不同。 编辑:显然,使用g77(gran的fortran77前端)可以使用gcc的built-in atan functionauto-fold PI=4.D0*DATAN(1.D0) into a constant(并默认启用)。 编辑结束