LINUX.ORG.RU

C, fortran, gcc, двумерный массив


0

0

В общем имеется такая функция на фортране.

      SUBROUTINE DECOMP(NDIM,N,A,COND,IPVT,WORK)
C
      INTEGER NDIM,N
      REAL A(NDIM,N),COND,WORK(N)
      INTEGER IPVT(N)
C     Дальше собственно функция
      END
Как видно, A - двумерный массив. Подскажите, как правильно объявить прототип функции на C и в каком виде нужно передавать ей массив из функции на C? (вся сложность для меня заключается в двумерном массиве, остальные переменные и одномерный массив я передать могу, собрать программу могу)


Ну 2-мерный массив, это будет, например, указатель на указатель на float или double (не помню, чему равен реал из фортрана).
Соответственно, передаешь его и размерности.

tzukko
()

void decomp_(int * ndim, int * n, float * a, int * ipvt, float * work);

двумерный массив в фортране это обычный плоский массив идущий по столбцам.

Reset ★★★★★
()
Ответ на: комментарий от tzukko

не будет никакого указателя на указатель.

Reset ★★★★★
()
Ответ на: комментарий от Reset

Пропустили "float * cond".

2gagarin. А массив a нужно будет формировать отдельно, то есть "float a[2][2]" в головной программе не подойдет, как уже сказали, данные лежат по столбцам.

mky ★★★★★
()
Ответ на: комментарий от mky

транспонировать, передать в фортран, потом опять транспонировать

Reset ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.