CPPLapack
 All Classes Files Functions Variables Friends
zhematrix.hpp
Go to the documentation of this file.
00001 //=============================================================================
00002 //! Complex Double-precision Hermitian Matrix Class [l-type (UPLO=l) Strage]
00003 /*! The imaginary part of every diagonal component is not referenced. */
00004 class zhematrix
00005 {
00006 public:
00007   ///////////////////////////////////////////////
00008   /////////////////// objects ///////////////////
00009   ///////////////////////////////////////////////
00010   long const& m; //!< matrix row size
00011   long n; //!< matrix column size
00012   comple* array; //!< 1D array to store matrix data
00013   comple** darray; //!< array of pointers of column head addresses
00014   
00015   ///////////////////////////////////////////////
00016   ///////////////// constructors ////////////////
00017   ///////////////////////////////////////////////
00018   inline zhematrix();
00019   inline zhematrix(const zhematrix&);
00020   inline zhematrix(const _zhematrix&);
00021   inline zhematrix(const long&);
00022   inline zhematrix(const char*);
00023   inline ~zhematrix(); //destructor
00024   
00025   ///////////////////////////////////////////////
00026   ////////////////// functions //////////////////
00027   ///////////////////////////////////////////////
00028   //////// cast ////////
00029   inline _zgematrix to_zgematrix() const;
00030   
00031   //////// io ////////
00032   inline zhecomplex operator()(const long&, const long&);
00033   inline comple  operator()(const long&, const long&) const;
00034   inline zhematrix& set(const long&, const long&, const comple&);
00035   inline friend std::ostream& operator<<(std::ostream&, const zhematrix&);
00036   inline void write(const char*) const;
00037   inline void read(const char*);
00038   
00039   //////// misc ////////
00040   inline void complete() const;
00041   inline void clear();
00042   inline zhematrix& zero();
00043   inline zhematrix& identity();
00044   inline void chsign();
00045   inline void copy(const zhematrix&);
00046   inline void shallow_copy(const _zhematrix&);
00047   inline void resize(const long&);
00048   inline _zrovector row(const long&) const;
00049   inline _zcovector col(const long&) const;
00050   inline friend void swap(zhematrix&, zhematrix&);
00051   inline friend _zhematrix _(zhematrix&);
00052   
00053   //////// calc ////////
00054   inline friend _zhematrix t(const zhematrix&);
00055   inline friend _zgematrix i(const zhematrix&);
00056   inline friend _zhematrix conj(const zhematrix&);
00057   inline friend _zhematrix conjt(const zhematrix&);
00058   
00059   //////// lapack ////////
00060   inline long zhesv(zgematrix&);
00061   inline long zhesv(zcovector&);
00062   inline long zheev(std::vector<double>&, const bool&);
00063   inline long zheev(std::vector<double>&, std::vector<zcovector>&);
00064   inline long zheev(std::vector<double>&, std::vector<zrovector>&);
00065   
00066   ///////////////////////////////////////////////
00067   ///////////// numerical operators /////////////
00068   ///////////////////////////////////////////////
00069   //////// = ////////
00070   inline zhematrix& operator=(const  zhematrix&);
00071   inline zhematrix& operator=(const _zhematrix&);
00072   
00073   //////// += ////////
00074   inline zhematrix& operator+=(const  zhematrix&);
00075   inline zhematrix& operator+=(const _zhematrix&);
00076   
00077   //////// -= ////////
00078   inline zhematrix& operator-=(const  zhematrix&);
00079   inline zhematrix& operator-=(const _zhematrix&);
00080   
00081   //////// *= ////////
00082   inline zhematrix& operator*=(const  zhematrix&);
00083   inline zhematrix& operator*=(const _zhematrix&);
00084   inline zhematrix& operator*=(const     double&);
00085   
00086   //////// /= ////////
00087   inline zhematrix& operator/=(const     double&);
00088   
00089   //////// unary ////////
00090   inline friend const zhematrix& operator+(const zhematrix&);
00091   inline friend _zhematrix operator-(const  zhematrix&);
00092   
00093   //////// + ////////
00094   inline friend _zgematrix operator+(const  zhematrix&, const  zgematrix&);
00095   inline friend _zgematrix operator+(const  zhematrix&, const _zgematrix&);
00096   inline friend _zhematrix operator+(const  zhematrix&, const  zhematrix&);
00097   inline friend _zhematrix operator+(const  zhematrix&, const _zhematrix&);
00098   inline friend _zgematrix operator+(const  zhematrix&, const  zgbmatrix&);
00099   inline friend _zgematrix operator+(const  zhematrix&, const _zgbmatrix&);
00100   inline friend _zgematrix operator+(const  zhematrix&, const  zgsmatrix&);
00101   inline friend _zgematrix operator+(const  zhematrix&, const _zgsmatrix&);
00102   inline friend _zgematrix operator+(const  zhematrix&, const  zhsmatrix&);
00103   inline friend _zgematrix operator+(const  zhematrix&, const _zhsmatrix&);
00104 
00105   //////// - ////////
00106   inline friend _zgematrix operator-(const  zhematrix&, const  zgematrix&);
00107   inline friend _zgematrix operator-(const  zhematrix&, const _zgematrix&);
00108   inline friend _zhematrix operator-(const  zhematrix&, const  zhematrix&);
00109   inline friend _zhematrix operator-(const  zhematrix&, const _zhematrix&);
00110   inline friend _zgematrix operator-(const  zhematrix&, const  zgbmatrix&);
00111   inline friend _zgematrix operator-(const  zhematrix&, const _zgbmatrix&);
00112   inline friend _zgematrix operator-(const  zhematrix&, const  zgsmatrix&);
00113   inline friend _zgematrix operator-(const  zhematrix&, const _zgsmatrix&);
00114   inline friend _zgematrix operator-(const  zhematrix&, const  zhsmatrix&);
00115   inline friend _zgematrix operator-(const  zhematrix&, const _zhsmatrix&);
00116   
00117   //////// * ////////
00118   inline friend _zcovector operator*(const  zhematrix&, const  zcovector&);
00119   inline friend _zcovector operator*(const  zhematrix&, const _zcovector&);
00120   inline friend _zgematrix operator*(const  zhematrix&, const  zgematrix&);
00121   inline friend _zgematrix operator*(const  zhematrix&, const _zgematrix&);
00122   inline friend _zgematrix operator*(const  zhematrix&, const  zhematrix&);
00123   inline friend _zgematrix operator*(const  zhematrix&, const _zhematrix&);
00124   inline friend _zgematrix operator*(const  zhematrix&, const  zgbmatrix&);
00125   inline friend _zgematrix operator*(const  zhematrix&, const _zgbmatrix&);
00126   inline friend _zgematrix operator*(const  zhematrix&, const  zgsmatrix&);
00127   inline friend _zgematrix operator*(const  zhematrix&, const _zgsmatrix&);
00128   inline friend _zgematrix operator*(const  zhematrix&, const  zhsmatrix&);
00129   inline friend _zgematrix operator*(const  zhematrix&, const _zhsmatrix&);
00130   inline friend _zhematrix operator*(const  zhematrix&, const     double&);
00131   inline friend _zgematrix operator*(const  zhematrix&, const     comple&);
00132   
00133   //////// / ////////
00134   inline friend _zhematrix operator/(const  zhematrix&, const     double&);
00135   inline friend _zgematrix operator/(const  zhematrix&, const     comple&);
00136   
00137   //////// double, comple ////////
00138   inline friend _zhematrix operator*(const     double&, const  zhematrix&);
00139   inline friend _zgematrix operator*(const     comple&, const  zhematrix&);
00140 };
 All Classes Files Functions Variables Friends