主题:alog 问题
a_april
[专家分:0] 发布于 2011-04-09 01:29:00
请教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个回复)
沙发
dongyuanxun [专家分:7180] 发布于 2011-04-09 01:57:00
ALOG的Argument Type必须为REAL(4)
lz的显然是双精度
ps:为啥不直接用LOG呢,可以接受各种精度
板凳
cgl_lgs [专家分:21040] 发布于 2011-04-09 10:12:00
[quote]ALOG的Argument Type必须为REAL(4)
lz的显然是双精度
ps:为啥不直接用LOG呢,可以接受各种精度[/quote]
確實如董兄所說,不過我發現從FORTRAN66留下來的古董代碼似乎很鐘情于寫上類型前綴。是歷史原因還是什么?不知道董兄或是asymptotic兄知道否?
3 楼
dongyuanxun [专家分:7180] 发布于 2011-04-09 10:38:00
[quote][quote]ALOG的Argument Type必须为REAL(4)
lz的显然是双精度
ps:为啥不直接用LOG呢,可以接受各种精度[/quote]
確實如董兄所說,不過我發現從FORTRAN66留下來的古董代碼似乎很鐘情于寫上類型前綴。是歷史原因還是什么?不知道董兄或是asymptotic兄知道否?[/quote]
因为那时还没有Generic Intrinsic Function(应该翻译成泛型内部过程之类),如果用古董编译器,还真没有LOG呢,现在只要支持f90的,就有这个了。
4 楼
cgl_lgs [专家分:21040] 发布于 2011-04-09 15:59:00
[quote][quote][quote]ALOG的Argument Type必须为REAL(4)
lz的显然是双精度
ps:为啥不直接用LOG呢,可以接受各种精度[/quote]
確實如董兄所說,不過我發現從FORTRAN66留下來的古董代碼似乎很鐘情于寫上類型前綴。是歷史原因還是什么?不知道董兄或是asymptotic兄知道否?[/quote]
因为那时还没有Generic Intrinsic Function(应该翻译成泛型内部过程之类),如果用古董编译器,还真没有LOG呢,现在只要支持f90的,就有这个了。[/quote]
呵呵,原來如此,那看來現在去掉那些類型前綴還是挺安全的,也是挺正確的呢:)
5 楼
asymptotic [专家分:16630] 发布于 2011-05-24 09:27:00
偶尔链接到这个帖子,对 Fortran 某些库函数的名字,我也很好奇,估计颇有历史,比如 cmplx 其来历,我就未曾找到?
ALog 我觉得是为了与 I-N 规则一致,但问题是,为何不用 RLog 呢?也许是当时设计者拍拍脑袋想出来的。
我来回复