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