Я хотел бы обратиться за помощью к функции DPOTRS из LAPACK при вызове из C. Да, я знаю, что матрица, с которой я пытаюсь работать, является положительно определенной (с собственными значениями 3, 1 на самом деле!)
Сейчас моя функция работает неправильно. Он возвращает неверный результат.
double A[] = {2.0, 1.0, 1.0, 2.0};
double b[] = {1.5, 0.0};
printf("%5.3f %5.3f\n", b[0], b[1]);
info = dpotrs('U',2,1,A,2,b,2);
printf("%d\n", info);
printf("%5.3f %5.3f\n", b[0], b[1]);
Это код. dpotrs импортируется вручную с помощью этого кода:
static long dpotrs(char UPLO, long N, long NRHS, double* A, long LDA, double* B, long LDB)
{
extern void dpotrs_(char* UPLOp, long* Np, long* NRHSp, double* A, long* LDAp, double* B, long* LDBp, long* infop);
long info;
dpotrs_(&UPLO, &N, &NRHS, A, &LDA, B, &LDB, &info);
return info;
}
Он возвращает неверный результат! Правильный результат будет 1.000,-0.500
Однако я получаю 0,469, -0,188
Но вдобавок info возвращает 0, как будто все прошло хорошо!
И это, дамы и господа, уму непостижимо.
Заранее спасибо!