Что делает .i. сослаться на фортран? - PullRequest
0 голосов
/ 04 июля 2018

Я обычно использую только R или Python, поэтому мое понимание Fortran действительно ограничено. Но в настоящее время я должен сделать некоторые подпрограммы из программы на Фортране доступными для R. Я наткнулся на эту строку в одной из подпрограмм, которые мне нужно «экспортировать».

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

И я не могу понять, что .i. должен делать там. Объявлена ​​переменная i, но, похоже, она не используется для этой подпрограммы.

Мой компилятор, gfortran, также не может пройти этот срок. Я пробовал поискать в Google, но этот термин не совсем "Google".

Поскольку используются библиотеки IMSL, возможно, это выражение из них.

1 Ответ

0 голосов
/ 04 июля 2018

Проверка руководства библиотеки IMSL Fortran, на стр. 49:

ГЛАВА 10: ЛИНЕЙНЫЕ ОПЕРАТОРЫ АЛГЕБРЫ И ОБЩИЕ ФУНКЦИИ

(...)

ОПЕРАТОРЫ: .i.

Вычисляет обратную матрицу для квадратных неособых матриц или обобщенная обратная матрица Мура-Пенроуза для сингулярного квадрата матрицы или прямоугольные матрицы.

Как сказал @francescalus, идентификаторы, окруженные точками в фортране, являются операторами. Помимо внутренних операторов, таких как .lt., пользовательские операторы, подобные этому, могут быть написаны для использования в качестве удобных сокращений для общих функций.

ОТО, этот вид материала должен быть очень хорошо задокументирован, чтобы не стать загадкой для тех, кто видит код. В этом случае имя, чуть более значимое .inv., возможно, подойдет лучше.

...