在使用下列来计算PI在fortran77,将编译器评价,这值或者将其评估在运行时间?

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

有帮助吗?

解决方案

编辑:取决于编译器:看见我的编辑下。 编辑结束

我的第二米克夏普的建议,即它将评估在运行时间。只是出于好奇,我编写了 PI=4.D0*DATAN(1.D0)Silverfrost的ftn77编译器 看着所产生的二进制的。相关部分看起来像这样:

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

因此,事实上,没有编译器聪明的在这里。

这当然可能是不同的,另一个编译器(例如。77国集团). 编辑:显然,与77国集团(第fortran77前结束海湾合作委员会)是可能的(和默认)使用的海湾合作委员会 内atan功能自动折叠 PI=4.D0*DATAN(1.D0) 进入一恒定. 编辑结束

其他提示

呼叫至数学函数通常在运行时评估。毕竟,有什么能阻止你编写自己的数学函数。如果他们在编译时评价这将是不可能的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top