回 帖 发 新 帖 刷新版面

主题:alog 问题

请教fortran 达人,为什么alog是fortran自己的函数,还会给这一个错误信息呢?是需要include什么吗?谢了。网上google了很久没找到答案。用的是visual fortran6.6 (alog在我的另一个程序中就没有问题,同样的编译版本,晕了[em18][em18])
Error: This name does not have a type, and must have an explicit type.   [ALOG]
 10   nu1   = time - (y - s*alog(1.0d0+y))

回复列表 (共5个回复)

沙发

ALOG的Argument Type必须为REAL(4)
lz的显然是双精度

ps:为啥不直接用LOG呢,可以接受各种精度

板凳

[quote]ALOG的Argument Type必须为REAL(4)
lz的显然是双精度

ps:为啥不直接用LOG呢,可以接受各种精度[/quote]
確實如董兄所說,不過我發現從FORTRAN66留下來的古董代碼似乎很鐘情于寫上類型前綴。是歷史原因還是什么?不知道董兄或是asymptotic兄知道否?

3 楼

[quote][quote]ALOG的Argument Type必须为REAL(4)
lz的显然是双精度

ps:为啥不直接用LOG呢,可以接受各种精度[/quote]
確實如董兄所說,不過我發現從FORTRAN66留下來的古董代碼似乎很鐘情于寫上類型前綴。是歷史原因還是什么?不知道董兄或是asymptotic兄知道否?[/quote]
因为那时还没有Generic Intrinsic Function(应该翻译成泛型内部过程之类),如果用古董编译器,还真没有LOG呢,现在只要支持f90的,就有这个了。

4 楼

[quote][quote][quote]ALOG的Argument Type必须为REAL(4)
lz的显然是双精度

ps:为啥不直接用LOG呢,可以接受各种精度[/quote]
確實如董兄所說,不過我發現從FORTRAN66留下來的古董代碼似乎很鐘情于寫上類型前綴。是歷史原因還是什么?不知道董兄或是asymptotic兄知道否?[/quote]
因为那时还没有Generic Intrinsic Function(应该翻译成泛型内部过程之类),如果用古董编译器,还真没有LOG呢,现在只要支持f90的,就有这个了。[/quote]
呵呵,原來如此,那看來現在去掉那些類型前綴還是挺安全的,也是挺正確的呢:)

5 楼

偶尔链接到这个帖子,对 Fortran 某些库函数的名字,我也很好奇,估计颇有历史,比如 cmplx 其来历,我就未曾找到?
ALog 我觉得是为了与 I-N 规则一致,但问题是,为何不用 RLog 呢?也许是当时设计者拍拍脑袋想出来的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册