#ifndef LAEVINTERFACE_HH #define LAEVINTERFACE_HH #include "arch.hpp" extern "C" { // ********************* Eigen Solve Routines *************************** // Solve generalized double eigenvalue problem (QZ) void dggev_(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 *lwork,int *info); // Solve complex generalized eigenvalue problem (QZ) void zggev_(char *jobvl,char* jobvr,int* N,complex* A, int* lda,complex* B, int* ldb, complex* alpha, complex* beta, complex* vl, int* ldvl, complex* vr, int* ldvr, complex* work, int* lwork, double* rwork, int* info); // Expert routine for solving generalized eigenvalue problem (QZ) // zggevx // dggevx //Solve double standard symmetric eigenvlaue problem void dsyev_(char *jobz, char *uplo, int* n , double *A , int* lda, double* w, double* work, int* lwork, int* info); //Balancing and permuting matrix pencil routines void dggbal_(char *job, int* n, double* A, int* lda, double* B, int* ldb, int* ilo, int* ihi, double* lscale, double* rscale, double* work, int* info); void dggbak_(char* job, char* side, int* n, int* ilo, int* ihi, double* lscale, double* rscale, int* m, double* v, int* ldv, int* info); void zggbal_(char *job, int* n, std::complex *A, int* lda, std::complex *B, int* ldb, int* ilo, int* ihi, double* lscale, double* rscale, double* work, int* info); void zggbak_(char* job, char* side, int* n, int* ilo, int* ihi, double* lscale, double* rscale, int* m, std::complex *v, int* ldv, int* info); void dsygv_(int* itype, char *jobzm, char* uplo , int* n1, double* A , int * n, double* B, int *nb, double * lami, double * work, int * lwork, int * info); // General Linear Complex System Solver void zgesv_(int * n, int * nrhs, std::complex * A, int * lda, int * ipiv, std::complex * B, int * ldb, int * info ); void dgesv_(int * n, int * nrhs, double * A, int * lda, int * ipiv, double * B, int * ldb, int * info ); } #endif