我用R附加了一个fortran代码,但我得不到预期的输出。 我的Fortran代码非常简单:
subroutine getintparms(sml,eps,big,mnlam,rsqmax,pmin,exmx)
data sml0,eps0,big0,mnlam0,rsqmax0,pmin0,exmx0 /1.0e-5,1.0e-6,9.9&
&e35,5,0.999,1.0e-9,250.0/
sml=sml0
eps=eps0
big=big0
mnlam=mnlam0
rsqmax=rsqmax0
pmin=pmin0
exmx=exmx0
return
end
我使用以下R代码调用Fortran代码:
dyn.load("C:\\Users\\Fabian\\Documents\\FortranRoutine.dll")
value=.Fortran("getintparms",fdev=double(1), eps=double(1),
big=double(1),mnlam=integer(1),devmax=double(1),
pmin=double(1),exmx=double(1))
,但我得到了
$fdev
[1] 4.571853e-315 ->instead of 1.0e-5
$eps
[1] 4.436653e-315 ->instead of 1.0e-6
...
$mnlam
[1] 5 ->this is correct
...
我不知道为什么我会得到这个数字而且我不知道我做错了什么。
...好吧我现在把我的变量宣布为......
double precision::sml,eps,big,mnlam,rsqmax,pmin,exmx
现在我有一些调用我的getintparms子程序的调用,我总是得到错误:
警告189 - 在之前的getintparm调用中,第五个Argument类型为Real(KIND = 2),它现在是REAL(KIND = 1)
如何避免此警告消息?