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