【发布时间】:2015-01-27 01:17:44
【问题描述】:
我对 Fortran 很陌生,我正在“玩”函数。 我在一个非常简单的程序中发现了一个非常奇怪的行为,我无法以任何方式证明这一点。这是简单的代码:
Real*8 Function gamma(v)
Implicit None
Real*8 :: v
gamma = 1.0_8 / Sqrt(1.0_8 - v ** 2)
End Function gamma
Program test_gamma
Implicit None
Real*8 :: v = 0.5_8, gamma
print *,"Gamma = ", 1.0_8 / Sqrt(1.0_8 - v ** 2)
End Program
这会打印出确切的结果:1.1547005383792517
但是如果我使用函数调用,做同样的计算,print *,"Gamma = ", gamma(v) 我得到了意想不到的结果1.7724538509055161。
我在这里错过了什么?
【问题讨论】:
-
谢谢,是的,我在声明中添加了 gamma,
Real*8 :: v = 0.5_8, gamma,但结果没有改变。我认为由于某种原因从未调用过该函数。