与R一起在Fortran中处理实数 [英] Handling reals in Fortran together with R

查看:80
本文介绍了与R一起在Fortran中处理实数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在处理与R一起使用的Fortran中的实数时遇到麻烦.以下代码用Fortran编写:

I am having trouble handling reals in Fortran, which I use together with R. The following code is written in Fortran:

Subroutine realtest(lol)
implicit none
Real lol
lol = 10.0
End

我用命令R CMD SHLIB realtest.f进行编译.如果我在R中以以下方式运行共享库:

I compile with the command R CMD SHLIB realtest.f. If I run the shared object in R as:

dyn.load("realtest.so")
res <- .Fortran("realtest",lol= as.numeric(1.2))

lol的结果值为1.2,但应该为10.如果我用Integers进行整件事,我会得到正确的值10.

The resulting value of lol is 1.2, but it should have been 10. If I do the whole thing with Integers instead, I get the correct value 10.

推荐答案

尝试使用double precision代替real;以下对我有用:

Try using double precision instead of real; the following works for me:

! realtest.f90
!
subroutine realtest(x)
    implicit none

    double precision, intent(inout) :: x
    x = 10.0
end subroutine realtest

从R

dyn.load("realtest.so") 
res <- .Fortran("realtest", x = as.double(1.2))
res
# $x
# [1] 10

这篇关于与R一起在Fortran中处理实数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆