.i. 是什么意思?在 Fortran 中指的是什么?
What does .i. refer to in Fortran?
我平时只会用R或者Python所以对Fortran的理解真的很有限。但目前我必须使一些 Fortran 程序的子例程可供 R 使用。我在我需要 "export" 的子例程之一中遇到了这一行。
R2inv(1:(i2-i1-1),1:(i2-i1-1)) = .i.(corrMat((i1+1):(i2-1),(i1+1):(i2-1)))
而且我不知道 .i.
应该在那里做什么。声明了一个 i
变量,但它似乎没有用于该子例程。
我的编译器 gfortran 也无法克服这个术语。
我尝试使用谷歌搜索,但该术语并不是真正的 "googlable"。
由于使用了 IMSL 库,因此可能是来自这些库的表达式。
检查 IMSL Fortran 库的 manual,第 49 页:
CHAPTER 10: LINEAR ALGEBRA OPERATORS AND GENERIC FUNCTIONS
(...)
OPERATORS: .i.
Computes the inverse matrix, for square non-singular matrices, or
the MoorePenrose generalized inverse matrix for singular square
matrices or rectangular matrices.
正如@francescalus 所说,fortran 中由点包围的标识符是运算符。
除了像 .lt.
这样的固有运算符之外,还可以编写像这样的自定义运算符,以用作常用函数的便捷快捷方式。
OTOH,这种东西必须有很好的文档记录,以免让看到代码的人感到困惑。在这种情况下,一个更有意义的名字 .inv.
可以说是更合适的。
我平时只会用R或者Python所以对Fortran的理解真的很有限。但目前我必须使一些 Fortran 程序的子例程可供 R 使用。我在我需要 "export" 的子例程之一中遇到了这一行。
R2inv(1:(i2-i1-1),1:(i2-i1-1)) = .i.(corrMat((i1+1):(i2-1),(i1+1):(i2-1)))
而且我不知道 .i.
应该在那里做什么。声明了一个 i
变量,但它似乎没有用于该子例程。
我的编译器 gfortran 也无法克服这个术语。 我尝试使用谷歌搜索,但该术语并不是真正的 "googlable"。
由于使用了 IMSL 库,因此可能是来自这些库的表达式。
检查 IMSL Fortran 库的 manual,第 49 页:
CHAPTER 10: LINEAR ALGEBRA OPERATORS AND GENERIC FUNCTIONS
(...)
OPERATORS:
.i.
Computes the inverse matrix, for square non-singular matrices, or the MoorePenrose generalized inverse matrix for singular square matrices or rectangular matrices.
正如@francescalus 所说,fortran 中由点包围的标识符是运算符。
除了像 .lt.
这样的固有运算符之外,还可以编写像这样的自定义运算符,以用作常用函数的便捷快捷方式。
OTOH,这种东西必须有很好的文档记录,以免让看到代码的人感到困惑。在这种情况下,一个更有意义的名字 .inv.
可以说是更合适的。