什么是.i。在Fortran中引用?

时间:2018-07-04 13:46:43

标签: fortran fortran90

我通常只使用R或Python,因此我对Fortran的理解确实很有限。但是目前,我必须将Fortran程序中的某些子例程提供给R。我在需要“导出”的其中一个子例程中遇到了这一行。

R2inv(1:(i2-i1-1),1:(i2-i1-1)) = .i.(corrMat((i1+1):(i2-1),(i1+1):(i2-1)))

我无法弄清楚.i.应该在那里做什么。声明了一个i变量,但似乎未用于该子例程。

我的编译器gfortran也无法解决这个问题。 我尝试使用谷歌搜索,但该词并不是真正的“可搜索”。

由于使用了IMSL库,也许是这些表达式的表达。

1 个答案:

答案 0 :(得分:4)

检查IMSL Fortran库的manual,第49页:

  

第10章:线性代数运算符和一般函数

     

(...)

     

运算符:.i.

     

计算平方非奇异矩阵的逆矩阵,或   奇异平方的MoorePenrose广义逆矩阵   矩阵或矩形矩阵。

正如@francescalus所说,fortran中用圆点括起来的标识符是运算符。 除了.lt.之类的内在运算符之外,像这样的自定义运算符也可以编写为用作通用函数的便捷捷径。

OTOH,此类资料必须经过充分记录,以免对看到代码的人造成误解。在这种情况下,更有意义的名称.inv.可能更适合。