void solve_entire_mr(int n, double *A, double *E, double *Q, char type){ double tol = 0.; int *isuppz = malloc(2*n*sizeof(int)); assert(isuppz); int k; int info = LAPACKE_dsyevr(LAPACK_COL_MAJOR, type, 'A', 'L', n, A, n, 0., 0., 0, 0, tol, &k, E, Q, n, isuppz); assert(!info); free(isuppz); }
void rr_eig(gsl_matrix *sym, gsl_vector *eval, gsl_matrix *evec, size_t NCOMP ){ // Relative robust Eigen decomposition size_t NSUB = sym->size1; lapack_int m=0; double abstol=-1.0, vl=0.0, vu=0.0; lapack_int *ifail = (lapack_int *)LAPACKE_malloc( sizeof(lapack_int) * NSUB ); LAPACKE_dsyevr(LAPACK_ROW_MAJOR, 'V', 'I', 'U', NSUB, sym->data, NSUB, vl, vu, NSUB-NCOMP+1, NSUB, abstol, &m, eval->data, evec->data, NCOMP, ifail); }