NGSolve
4.9
|
00001 // old style interface 00002 00003 #ifndef LAEVINTERFACE_HH 00004 #define LAEVINTERFACE_HH 00005 00006 #include "arch.hpp" 00007 00008 00009 #ifdef OWN_LAPACK 00010 extern "C" 00011 { 00012 // ********************* Eigen Solve Routines *************************** 00013 00014 // Solve generalized double eigenvalue problem (QZ) 00015 void dggev_(char *jobvl,char *jobvr,int *N,double *A,int *lda,double *B, 00016 int *ldb,double *alphaR,double *alphaI,double* beta, 00017 double* vl, int *ldvl,double *vr,int *ldvr, 00018 double *work, int *lwork,int *info); 00019 00020 00021 // Solve complex generalized eigenvalue problem (QZ) 00022 void zggev_(char *jobvl,char* jobvr,int* N,complex<double>* A, int* lda,complex<double>* B, int* ldb, complex<double>* alpha, complex<double>* beta, complex<double>* vl, int* ldvl, complex<double>* vr, int* ldvr, complex<double>* work, int* lwork, double* rwork, int* info); 00023 00024 // Expert routine for solving generalized eigenvalue problem (QZ) 00025 // zggevx 00026 // dggevx 00027 00028 //Solve double standard symmetric eigenvlaue problem 00029 void dsyev_(char *jobz, char *uplo, int* n , double *A , int* lda, double* w, 00030 double* work, int* lwork, int* info); 00031 00032 00033 //Balancing and permuting matrix pencil routines 00034 void dggbal_(char *job, int* n, double* A, int* lda, double* B, int* ldb, 00035 int* ilo, int* ihi, double* lscale, double* rscale, 00036 double* work, int* info); 00037 void dggbak_(char* job, char* side, int* n, int* ilo, int* ihi, double* lscale, 00038 double* rscale, int* m, double* v, int* ldv, int* info); 00039 void zggbal_(char *job, int* n, std::complex<double> *A, int* lda, 00040 std::complex<double> *B, int* ldb, int* ilo, int* ihi, 00041 double* lscale, double* rscale, double* work, int* info); 00042 void zggbak_(char* job, char* side, int* n, int* ilo, int* ihi, double* lscale, 00043 double* rscale, int* m, std::complex<double> *v, int* ldv, 00044 int* info); 00045 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); 00046 void zhegv_(int* itype, char *jobzm, char* uplo , int* n1, std::complex<double>* A , int * n, std::complex<double>* B, int *nb, double * lami, std::complex<double> * work, int * lwork,double * rwork, int * info); 00047 00048 // void zsygv_(int* itype, char *jobzm, char* uplo , int* n1, std::complex<double>* A , int * n, std::complex<double>* B, int *nb, std::complex<double> * lami, std::complex<double> * work, int * lwork, int * info); 00049 00050 // General Linear Complex System Solver 00051 void zgesv_(int * n, int * nrhs, std::complex<double> * A, int * lda, int * ipiv, std::complex<double> * B, int * ldb, int * info ); 00052 void dgesv_(int * n, int * nrhs, double * A, int * lda, int * ipiv, double * B, int * ldb, int * info ); 00053 00054 void zggevx_(char * balance, char * jobvl, char * jobvr, char * sense, int * n, complex<double> * at, int * n2, complex<double> * bt, int * n3, complex<double> * alpha, complex<double> * beta, complex<double> * vl, int * nvl, complex<double> * vr, int * nvr, 00055 int * ilo, int * ihi, double * lscale, double * rscale, double * abnrm, double * bbnrm, double * rconde, double * rcondv, complex<double> * work , int * lwork, double * rwork, int* iwork, bool * bwork, int * info); 00056 00057 00058 } 00059 00060 #endif 00061 #endif