У меня есть функция C ++, которая обновляет 2 массива, причем массивы передаются по ссылке:
double* CPPF(double array[],int size, double a1[], double a2[]){
int m = size, n = size
/* code that updates a1 and a2 arrays goes here */
return 0;
}
В моей основной функции у меня есть
var bigArray = new double[size*size];
for (int i = 0; i < dimension; i++){
for (int j = 0; j <= i; j++)
bigArray[i * size + j] = bigArray [j * size+ i] = Other[i,j];
}
double[] a1 = new double[size * size];
double[] a2 = new double[size];
double* RESULT = CPPF(bigArray, size, a1, a2);
// Use updated a1 and a2
Как бы я определил функцию Фортрана, которая обновляет эти 2 массива? Я знаю, что это возможно, потому что вы не передаете аргументы по значениям, только по ссылке.
Я до сих пор пробовал что-то вроде:
REAL FUNCTION FF(A, size, a1,a2)
IMPLICIT NONE
INTEGER, INTENT(IN) :: size
REAL :: A(:,:), a1(:),a2(:)
!UPDATE a1 and a2 and finish
END FUNCTION FF