Dear Sir/Madam:
I am using the LAPACK library for resolving eigenvalues/vectors problems
through the "sggev". I used to make the programs on C/C++ and it calls
the fortran library. I have tested the dgesv function and it works, but
the sggev function returns bad results. Could you have any idea about?
Thank you very much.
Best regards,
Antonio Ruiz.
My program is very simple:
#include <stdio.h>
extern "C" {
int sggev_(char *jobvl, char *jobvr, int *n, double *a, int *lda,
double *b, int *ldb, double *alphar, double *alphai, double *beta,
double *vl, int *ldvl, double *vr, int *ldvr, double *work, int *work,
int *info);
}
int main(){
int N = 3, lda = 3, ldb = 3, nvr = 9, lwork = 24, nvl = 9, INFO;
double A[N*N]={6, 5, 4, 5, 3, 2, 4, 2, 1};
double B[N*N] ={1, 1, 1, 1, 4, 1, 1, 1, 6};
double VR[N*N], VL[N*N], WORK[8*N];
double ALPHAR[N], ALPHAI[N], BETA[N];
char jobvl='N';
char jobvr='V';
sggev_(&jobvl, &jobr, &N, A, &lda, B, &ldb, ALPHAR, ALPHAI, BETA, VL,
&nvl, VR, &nvr, WORK, &lwork, &INFO);
int i;
for (i = 0; i<N;i++)
printf("%lf \n", ALPHAR[i]/BETA[i]);
return INFO;
}
|