[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: FORTRAN && C




On Wed, 30 Oct 2002, Alexey Ozeritsky wrote:

> 
> проблема в том, что после этого
> ничего не работает.
> например функция для решения ур-я AX=B,
> с помощью LU разложения, если я не ошибаюсь:
> dgesv(N, NRHS, A, LDA, IPIV, B, LDB, INFO )
> 
> в прграмме пишу
> double *A,*X;
> int *C;
> int n;
> int INFO;
> .......
> n=5;
> ......
> A=malloc(n*n*sizeof(double));
> X=malloc(n*n*sizeof(double));
> C=malloc(n*n*sizeof(double));
> .......
> dgesv_(n,n,A,n,C,X,n,INFO);
> .......
> (в этом случае должно происходить обращение матрицы)
> 
> и получаю segmentation fault
> #1  0x080493c6 in main (argc=0, argv=0x0) at main.c:77
> 77              dgesv_(n,1,A,n,C,X,n,INFO);
> 
> 

  В фортране все аргументы передаются по адресу.
  Правильно писать

 dgesv_(&n,&n,A,&n,C,X,&n,&INFO);
 
  А вообще то я пользуюсь "обертками": либо lapack++, 
  либо mtl. 

  lapack++ - маленькая библиотека и будет полезна
  чтобы смотреть как там осуществляется вызов lapack-овских
  программок. Ответ я подсмотрел именно в ней.

  Успехов. 
  Юра.



Reply to: