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