我有一个 R 包,它使用大量 Fortran 子例程来进行递归线性代数计算的嵌套循环(很大程度上取决于 BLAS 和 LAPACK 例程)。作为 Fortran 的接口,我使用.Fortran
函数。我刚刚阅读了Jonathan Callahan 的关于使用而不是使用 C/C++ 编写的子例程的博客文章,这让我想到,在使用 Fortran 子例程时也使用接口会更好,方法是在 C 中编写一个简单的包装器,然后调用Fortran 子程序?.Call
.C
.Call
如前所述,我的 Fortran 代码在某种意义上非常简单,我只是使用双精度或整数类型的多维数组。但是我了解到我必须在 R 端写很多检查以确保一切都不会崩溃,因为我不小心忘记将某些矩阵的存储模式更改为整数或某些矩阵的维度已更改等。
子程序写为 F90/95。