Есть ли хороший способ написать оператор Fortran ASSOCIATE, чтобы превратить это
FORALL (i = 2:n-2)
v(:,i) = v(:,i) + MATMUL(A, &
c(2)*u(:,i-2) + c(1)*u(:,i-1) + c(0)*u(:,i) + c(1)*u(:,i+1) + c(2)*u(:,i+2))
END FORALL
в нечто вроде следующего
ASSOCIATE ( U => ..., V => ...)
FORALL (i = 2:n-2)
V(i) = V(i) + MATMUL(A, &
c(2)*U(i-2) + c(1)*U(i-1) + c(0)*U(i) + c(1)*U(i+1) + c(2)*U(i+2))
END FORALL
END ASSOCIATE
Я смотрю на Адамса и др. Справочник Фортрана 2003 раздел 8.2, но я не вижу, как написать конструкцию associate-name => selector
для индексированного доступа в associate-name
.
Очевидно, что я собираюсь излишне убить пару строк. У меня есть куча их, которые я бы хотел сжать.