我在使用dsysv
LAPACK 中的函数的 C 程序时遇到问题。一切都编译和工作没有任何错误,我唯一的问题是,例程不会遇到它应该的任何数组。代码(仅用于测试目的的硬编码):
#include <iostream>
using namespace std;
extern "C" {
extern int dsysv_( char*, int* , int* , double* ,int*,int*, double*,int*, double* ,int* ,int *);
}
int main() {
int n=3;
int nrhs=1;
int lda= 3;
int ldb=3;
int ipiv[3]={0,0,0};
double a[3*3] = {
1,2,3,
0,4,5,
0,0,6
};
double b[3]={1,2,3};
int info=42;
int lwork=-1;
double work[1]={0};
char uplo='U';
dsysv_(&uplo, &n, &nrhs, a, &lda, ipiv, b, &ldb, work, &lwork, &info);
cout<<"info: "<<info<<endl;
for(int i=0; i<3; i++){
cout<<b[i]<<" ";
}
cout <<endl<<"and A: "<<endl;
for(int i=0; i<9; i++){
cout<<a[i]<<" ";
}
return 1;
}
返回:
info: 0
1 2 3
and A:
1 2 3 0 4 5 0 0 6
虽然该功能应该覆盖a
和b
. 我想我在这里错过了一些非常明显的东西,自从我刚开始使用 LAPACK 时我就没有意识到这一点,希望能得到任何帮助。