CPPLapack
 All Classes Files Functions Variables Friends
dgsmatrix.hpp
Go to the documentation of this file.
00001 //=============================================================================
00002 //! Real Double-precision General Sparse Matrix Class
00003 class dgsmatrix
00004 {
00005 public:
00006   ///////////////////////////////////////////////
00007   /////////////////// objects ///////////////////
00008   ///////////////////////////////////////////////
00009   long m; //!< matrix row size
00010   long n; //!< matrix column size
00011   std::vector<dcomponent> 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 dgsmatrix();
00019   inline dgsmatrix(const dgsmatrix&);
00020   inline dgsmatrix(const _dgsmatrix&);
00021   inline dgsmatrix(const long&, const long&, const long=0);
00022   inline dgsmatrix(const char*);
00023   inline ~dgsmatrix(); //destructor
00024   
00025   ///////////////////////////////////////////////
00026   ////////////////// functions //////////////////
00027   ///////////////////////////////////////////////
00028   //////// cast ////////
00029   inline _zgsmatrix to_zgsmatrix() const;
00030   inline _dgematrix to_dgematrix() const;
00031   
00032   //////// io ////////
00033   inline double operator()(const long&, const long&) const;
00034   inline double& operator()(const long&, const long&);
00035   inline dgsmatrix& put(const long&, const long&, const double&);
00036   inline dgsmatrix& del(const long, const long); //<-- NOT (const long&)
00037   inline dgsmatrix& del(const long); //<-- NOT (const long&)
00038   inline friend std::ostream& operator<<(std::ostream&, const dgsmatrix&);
00039   inline void write(const char*) const;
00040   inline void read(const char*);
00041 
00042   //////// misc ////////
00043   inline void clear();
00044   inline dgsmatrix& zero();
00045   inline void chsign();
00046   inline void copy(const dgsmatrix&);
00047   inline void shallow_copy(const _dgsmatrix&);
00048   inline dgsmatrix& resize(const long&, const long&, const long=0, const long=0);
00049   inline void stretch(const long&, const long&);
00050   inline bool isListed(const long&, const long&) const;
00051   inline long number(const long&, const long&);
00052   inline void diet(const double=DBL_MIN);
00053   inline void checkup();
00054   inline _drovector row(const long&) const;
00055   inline _dcovector col(const long&) const;
00056   inline friend void swap(dgsmatrix&, dgsmatrix&);
00057   inline friend _dgsmatrix _(dgsmatrix&);
00058   
00059   //////// calc ////////
00060   inline friend _dgsmatrix t(const dgsmatrix&);
00061   inline friend void idamax(long&, long&, const dgsmatrix&);
00062   inline friend double damax(const dgsmatrix&);
00063   
00064   ///////////////////////////////////////////////
00065   ///////////// numerical operators /////////////
00066   ///////////////////////////////////////////////
00067   //////// = ////////
00068   inline dgsmatrix& operator=(const  dgsmatrix&);
00069   inline dgsmatrix& operator=(const _dgsmatrix&);
00070   
00071   //////// += ////////
00072   inline dgsmatrix& operator+=(const  dgsmatrix&);
00073   inline dgsmatrix& operator+=(const _dgsmatrix&);
00074   
00075   //////// -= ////////
00076   inline dgsmatrix& operator-=(const  dgsmatrix&);
00077   inline dgsmatrix& operator-=(const _dgsmatrix&);
00078   
00079   //////// *= ////////
00080   inline dgsmatrix& operator*=(const  dgsmatrix&);
00081   inline dgsmatrix& operator*=(const _dgsmatrix&);
00082   inline dgsmatrix& operator*=(const     double&);
00083   
00084   //////// /= ////////
00085   inline dgsmatrix& operator/=(const     double&);
00086 
00087   //////// unary ////////
00088   inline friend const dgsmatrix& operator+(const dgsmatrix&);
00089   inline friend _dgsmatrix operator-(const  dgsmatrix&);
00090   
00091   //////// + ////////
00092   inline friend _dgematrix operator+(const  dgsmatrix&, const  dgematrix&);
00093   inline friend _dgematrix operator+(const  dgsmatrix&, const _dgematrix&);
00094   inline friend _dgematrix operator+(const  dgsmatrix&, const  dsymatrix&);
00095   inline friend _dgematrix operator+(const  dgsmatrix&, const _dsymatrix&);
00096   inline friend _dgematrix operator+(const  dgsmatrix&, const  dgbmatrix&);
00097   inline friend _dgematrix operator+(const  dgsmatrix&, const _dgbmatrix&);
00098   inline friend _dgsmatrix operator+(const  dgsmatrix&, const  dgsmatrix&);
00099   inline friend _dgsmatrix operator+(const  dgsmatrix&, const _dgsmatrix&);
00100   inline friend _dgsmatrix operator+(const  dgsmatrix&, const  dssmatrix&);
00101   inline friend _dgsmatrix operator+(const  dgsmatrix&, const _dssmatrix&);
00102   
00103   //////// - ////////
00104   inline friend _dgematrix operator-(const  dgsmatrix&, const  dgematrix&);
00105   inline friend _dgematrix operator-(const  dgsmatrix&, const _dgematrix&);
00106   inline friend _dgematrix operator-(const  dgsmatrix&, const  dsymatrix&);
00107   inline friend _dgematrix operator-(const  dgsmatrix&, const _dsymatrix&);
00108   inline friend _dgematrix operator-(const  dgsmatrix&, const  dgbmatrix&);
00109   inline friend _dgematrix operator-(const  dgsmatrix&, const _dgbmatrix&);
00110   inline friend _dgsmatrix operator-(const  dgsmatrix&, const  dgsmatrix&);
00111   inline friend _dgsmatrix operator-(const  dgsmatrix&, const _dgsmatrix&);
00112   inline friend _dgsmatrix operator-(const  dgsmatrix&, const  dssmatrix&);
00113   inline friend _dgsmatrix operator-(const  dgsmatrix&, const _dssmatrix&);
00114   
00115   //////// * ////////
00116   inline friend _dcovector operator*(const  dgsmatrix&, const  dcovector&);
00117   inline friend _dcovector operator*(const  dgsmatrix&, const _dcovector&);
00118   inline friend _dgematrix operator*(const  dgsmatrix&, const  dgematrix&);
00119   inline friend _dgematrix operator*(const  dgsmatrix&, const _dgematrix&);  
00120   inline friend _dgematrix operator*(const  dgsmatrix&, const  dsymatrix&);
00121   inline friend _dgematrix operator*(const  dgsmatrix&, const _dsymatrix&);
00122   inline friend _dgematrix operator*(const  dgsmatrix&, const  dgbmatrix&);
00123   inline friend _dgematrix operator*(const  dgsmatrix&, const _dgbmatrix&);  
00124   inline friend _dgsmatrix operator*(const  dgsmatrix&, const  dgsmatrix&);
00125   inline friend _dgsmatrix operator*(const  dgsmatrix&, const _dgsmatrix&);
00126   inline friend _dgsmatrix operator*(const  dgsmatrix&, const  dssmatrix&);
00127   inline friend _dgsmatrix operator*(const  dgsmatrix&, const _dssmatrix&);
00128   inline friend _dgsmatrix operator*(const  dgsmatrix&, const     double&);
00129   
00130   //////// / ////////
00131   inline friend _dgsmatrix operator/(const  dgsmatrix&, const     double&);
00132 
00133   //////// double ////////
00134   inline friend _dgsmatrix operator*(const     double&, const  dgsmatrix&);
00135 };
 All Classes Files Functions Variables Friends