NGSolve  4.9
basiclinalg/LapackInterface.hpp
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