00001
00005
00006
00007 #ifndef TBCI_LAPACK_H
00008 #define TBCI_LAPACK_H
00009
00010 #include "basics.h"
00011 #include "cplx.h"
00012 #include "vector.h"
00013 #include "f_matrix.h"
00014 #include "f_bandmatrix.h"
00015
00016 NAMESPACE_TBCI
00017
00018 typedef cplx<double> COMPLEX_DOUBLE;
00019
00020
00021
00022
00023 F_TMatrix<double> inv(const F_Matrix<double>& A, int overwriteA=0);
00024 F_TMatrix<double> lu_solve(const F_Matrix<double>& A, const F_Matrix<double>& B, int overwriteA=0);
00025 TVector<double> lu_solve(const F_Matrix<double>& A, const Vector<double>& B, int overwriteA=0);
00026 TVector<double> lu_solve(const F_BandMatrix<double>& A, const Vector<double>& B);
00027 TVector<double> lu_solve_expert(const F_BandMatrix<double>& A, const Vector<double>& B, int equilibrate=1);
00028 TVector<double> lu_solve(F_BandMatrix<double>& A, const Vector<double>& B, int num_lower, int num_upper);
00029
00030
00031 F_TMatrix<COMPLEX_DOUBLE> inv(const F_Matrix<COMPLEX_DOUBLE>& A, int overwriteA=0);
00032 F_TMatrix<COMPLEX_DOUBLE> lu_solve(const F_Matrix<COMPLEX_DOUBLE>& A, const F_Matrix<COMPLEX_DOUBLE>& B, int overwriteA=0);
00033
00034
00035
00036
00037 int eig(const F_Matrix<double>& A, Vector<double>& EW);
00038 int eig(const F_Matrix<double>& A, Vector<double>& EW, F_Matrix<double>& EV);
00039 int eig(const F_BandMatrix<double>& A, Vector<double>& EW, F_Matrix<double>& EV);
00040 int eig(const F_BandMatrix<double>& A, Vector<double>& EW, F_Matrix<double>& EV,
00041 double ew_min, double ew_max);
00042
00043
00044 int eig(F_Matrix<cplx<double> > A, Vector<double>& EW);
00045 int eig(const F_Matrix<cplx<double> >& A, Vector<double>& EW, F_Matrix<cplx<double> >& EVec);
00046
00047
00048 int eig(const F_Matrix<COMPLEX_DOUBLE>& A, Vector<COMPLEX_DOUBLE>& EW);
00049 int eig(const F_Matrix<COMPLEX_DOUBLE>& A, Vector<COMPLEX_DOUBLE>& EW, F_Matrix<COMPLEX_DOUBLE>& EV);
00050
00051
00052
00053 int eig(const F_BandMatrix<cplx<double> >& A, const F_BandMatrix<cplx<double> >& B,
00054 double EW_min, double EW_max,
00055 Vector<double>& Eigenwerte, F_Matrix<cplx<double> >& Eigenvectoren);
00056
00057 NAMESPACE_END
00058 #endif