从 R 解释器编译 Fortran 代码
Compiling Fortran code from the R interpreter
我正在研究 运行 我的 Fortran R 代码中的关键循环。我找到了大量关于在 R 中调用已编译的 Fortran 子例程 的资源,但没有关于从 R 中调用 Fortran 代码编译 的资源。
我问的原因是我正在为充斥着数组的方程构建一个高效的 ODE 求解器;所以我需要以一种或另一种方式将模型方程式提供给 Fortran 求解器。我考虑过尝试将带有模型方程的字符串传递给 Fortran 子例程以进行评估,但后来我发现 this post 说这非常困难,因此我宁愿尽可能找到不同的解决方案。
欢迎任何其他有创意的解决方案。
您可以使用 inline 包。从 cfunction()
的示例部分开始:
## A simple Fortran example
code <- "
integer i
do 1 i=1, n(1)
1 x(i) = x(i)**3
"
cubefn <- cfunction(signature(n="integer", x="numeric"),
code, convention=".Fortran")
cubefn(n, x)$x
我正在研究 运行 我的 Fortran R 代码中的关键循环。我找到了大量关于在 R 中调用已编译的 Fortran 子例程 的资源,但没有关于从 R 中调用 Fortran 代码编译 的资源。
我问的原因是我正在为充斥着数组的方程构建一个高效的 ODE 求解器;所以我需要以一种或另一种方式将模型方程式提供给 Fortran 求解器。我考虑过尝试将带有模型方程的字符串传递给 Fortran 子例程以进行评估,但后来我发现 this post 说这非常困难,因此我宁愿尽可能找到不同的解决方案。
欢迎任何其他有创意的解决方案。
您可以使用 inline 包。从 cfunction()
的示例部分开始:
## A simple Fortran example
code <- "
integer i
do 1 i=1, n(1)
1 x(i) = x(i)**3
"
cubefn <- cfunction(signature(n="integer", x="numeric"),
code, convention=".Fortran")
cubefn(n, x)$x