CPPLapack
 All Classes Files Functions Variables Friends Pages
dssmatrix.hpp
Go to the documentation of this file.
1 //=============================================================================
2 //! Real Double-precision Symmetric Sparse Matrix Class
3 class dssmatrix
4 {
5 public:
6  ///////////////////////////////////////////////
7  /////////////////// objects ///////////////////
8  ///////////////////////////////////////////////
9  CPPL_INT const& m; //!< matrix row size
10  CPPL_INT n; //!< matrix column size
11  std::vector<dcomponent> data; //!< matrix data
12  std::vector< std::vector<CPPL_INT> > line; //!< vector of vector to store the entry information of component for each row and column
13 
14  ///////////////////////////////////////////////
15  ///////////////// constructors ////////////////
16  ///////////////////////////////////////////////
17  inline dssmatrix();
18  inline dssmatrix(const dssmatrix&);
19  inline dssmatrix(const _dssmatrix&);
20  inline dssmatrix(const CPPL_INT&, const CPPL_INT=0);
21  inline dssmatrix(const char*);
22  inline ~dssmatrix(); //destructor
23 
24  ///////////////////////////////////////////////
25  ////////////////// functions //////////////////
26  ///////////////////////////////////////////////
27  //////// cast ////////
28  inline _zhsmatrix to_zhsmatrix() const;
29  inline _dgematrix to_dgematrix() const;
30  inline _dsymatrix to_dsymatrix() const;
31  inline _dgsmatrix to_dgsmatrix() const;
32 
33  //////// io ////////
34  inline double operator()(const CPPL_INT&, const CPPL_INT&) const;
35  inline double& operator()(const CPPL_INT&, const CPPL_INT&);
36  inline dssmatrix& put(const CPPL_INT&, const CPPL_INT&, const double&);
37  inline dssmatrix& del(const CPPL_INT, const CPPL_INT); //<-- NOT (const CPPL_INT&)
38  inline dssmatrix& del(const CPPL_INT); //<-- NOT (const CPPL_INT&)
39  inline friend std::ostream& operator<<(std::ostream&, const dssmatrix&);
40  inline void write(const char*) const;
41  inline void read(const char*);
42 
43  //////// misc ////////
44  inline void clear();
45  inline dssmatrix& zero();
46  inline dssmatrix& identity();
47  inline void chsign();
48  inline void copy(const dssmatrix&);
49  inline void shallow_copy(const _dssmatrix&);
50  inline dssmatrix& resize(const CPPL_INT&, const CPPL_INT=0, const CPPL_INT=0);
51  inline void stretch(const CPPL_INT&);
52  inline bool isListed(const CPPL_INT&, const CPPL_INT&) const;
53  inline CPPL_INT number(const CPPL_INT&, const CPPL_INT&) const;
54  inline _drovector row(const CPPL_INT&) const;
55  inline _dcovector col(const CPPL_INT&) const;
56  inline void diet(const double=DBL_MIN);
57  inline CPPL_INT diag_front();
58  inline void reorder(const bool=0);
59  inline void rebuild();
60  inline void checkup();
61  inline friend void swap(dssmatrix&, dssmatrix&);
62  inline friend _dssmatrix _(dssmatrix&);
63 
64  //////// calc ////////
65  inline friend _dssmatrix t(const dssmatrix&);
66  inline friend void idamax(CPPL_INT&, CPPL_INT&, const dssmatrix&);
67  inline friend double damax(const dssmatrix&);
68 
69  //////// pardiso ////////
70  inline CPPL_INT pardiso_definite(dcovector&) const;
71  inline CPPL_INT pardiso_indefinite(dcovector&) const;
72 
73  ///////////////////////////////////////////////
74  ///////////// numerical operators /////////////
75  ///////////////////////////////////////////////
76  //////// = ////////
77  inline dssmatrix& operator=(const dssmatrix&);
78  inline dssmatrix& operator=(const _dssmatrix&);
79 
80  //////// += ////////
81  inline dssmatrix& operator+=(const dssmatrix&);
82  inline dssmatrix& operator+=(const _dssmatrix&);
83 
84  //////// -= ////////
85  inline dssmatrix& operator-=(const dssmatrix&);
86  inline dssmatrix& operator-=(const _dssmatrix&);
87 
88  //////// *= ////////
89  inline dssmatrix& operator*=(const double&);
90 
91  //////// /= ////////
92  inline dssmatrix& operator/=(const double&);
93 
94  //////// unary ////////
95  inline friend const dssmatrix& operator+(const dssmatrix&);
96  inline friend _dssmatrix operator-(const dssmatrix&);
97 
98  //////// + ////////
99  inline friend _dgematrix operator+(const dssmatrix&, const dgematrix&);
100  inline friend _dgematrix operator+(const dssmatrix&, const _dgematrix&);
101  inline friend _dgematrix operator+(const dssmatrix&, const dsymatrix&);
102  inline friend _dgematrix operator+(const dssmatrix&, const _dsymatrix&);
103  inline friend _dgematrix operator+(const dssmatrix&, const dgbmatrix&);
104  inline friend _dgematrix operator+(const dssmatrix&, const _dgbmatrix&);
105  inline friend _dgsmatrix operator+(const dssmatrix&, const dgsmatrix&);
106  inline friend _dgsmatrix operator+(const dssmatrix&, const _dgsmatrix&);
107  inline friend _dssmatrix operator+(const dssmatrix&, const dssmatrix&);
108  inline friend _dssmatrix operator+(const dssmatrix&, const _dssmatrix&);
109 
110  //////// - ////////
111  inline friend _dgematrix operator-(const dssmatrix&, const dgematrix&);
112  inline friend _dgematrix operator-(const dssmatrix&, const _dgematrix&);
113  inline friend _dgematrix operator-(const dssmatrix&, const dsymatrix&);
114  inline friend _dgematrix operator-(const dssmatrix&, const _dsymatrix&);
115  inline friend _dgematrix operator-(const dssmatrix&, const dgbmatrix&);
116  inline friend _dgematrix operator-(const dssmatrix&, const _dgbmatrix&);
117  inline friend _dgsmatrix operator-(const dssmatrix&, const dgsmatrix&);
118  inline friend _dgsmatrix operator-(const dssmatrix&, const _dgsmatrix&);
119  inline friend _dssmatrix operator-(const dssmatrix&, const dssmatrix&);
120  inline friend _dssmatrix operator-(const dssmatrix&, const _dssmatrix&);
121 
122  //////// * ////////
123  inline friend _dcovector operator*(const dssmatrix&, const dcovector&);
124  inline friend _dcovector operator*(const dssmatrix&, const _dcovector&);
125  inline friend _dgematrix operator*(const dssmatrix&, const dgematrix&);
126  inline friend _dgematrix operator*(const dssmatrix&, const _dgematrix&);
127  inline friend _dgematrix operator*(const dssmatrix&, const dsymatrix&);
128  inline friend _dgematrix operator*(const dssmatrix&, const _dsymatrix&);
129  inline friend _dgematrix operator*(const dssmatrix&, const dgbmatrix&);
130  inline friend _dgematrix operator*(const dssmatrix&, const _dgbmatrix&);
131  inline friend _dgsmatrix operator*(const dssmatrix&, const dgsmatrix&);
132  inline friend _dgsmatrix operator*(const dssmatrix&, const _dgsmatrix&);
133  inline friend _dgsmatrix operator*(const dssmatrix&, const dssmatrix&);
134  inline friend _dgsmatrix operator*(const dssmatrix&, const _dssmatrix&);
135  inline friend _dssmatrix operator*(const dssmatrix&, const double&);
136 
137  //////// / ////////
138  inline friend _dssmatrix operator/(const dssmatrix&, const double&);
139 
140  //////// double ////////
141  inline friend _dssmatrix operator*(const double&, const dssmatrix&);
142 };
std::vector< dcomponent > data
matrix data
Definition: dssmatrix.hpp:11
Real Double-precision General Sparse Matrix Class.
Definition: dgsmatrix.hpp:3
_dgsmatrix to_dgsmatrix() const
_dcovector col(const CPPL_INT &) const
void copy(const dssmatrix &)
std::vector< std::vector< CPPL_INT > > line
vector of vector to store the entry information of component for each row and column ...
Definition: dssmatrix.hpp:12
CPPL_INT number(const CPPL_INT &, const CPPL_INT &) const
dssmatrix & resize(const CPPL_INT &, const CPPL_INT=0, const CPPL_INT=0)
CPPL_INT pardiso_indefinite(dcovector &) const
dssmatrix & del(const CPPL_INT, const CPPL_INT)
dssmatrix & put(const CPPL_INT &, const CPPL_INT &, const double &)
_dgematrix to_dgematrix() const
bool isListed(const CPPL_INT &, const CPPL_INT &) const
(DO NOT USE) Smart-temporary Real Double-precision Symmetric Sparse Matrix Class
Definition: _dssmatrix.hpp:3
friend void swap(dssmatrix &, dssmatrix &)
friend _dssmatrix operator/(const dssmatrix &, const double &)
_zhsmatrix to_zhsmatrix() const
dssmatrix & operator+=(const dssmatrix &)
dssmatrix & operator/=(const double &)
void reorder(const bool=0)
double operator()(const CPPL_INT &, const CPPL_INT &) const
Definition: dssmatrix-io.hpp:3
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
CPPL_INT pardiso_definite(dcovector &) const
friend void idamax(CPPL_INT &, CPPL_INT &, const dssmatrix &)
Real Double-precision Symmetric Matrix Class [l-type (UPLO=l) Strage].
Definition: dsymatrix.hpp:3
(DO NOT USE) Smart-temporary Real Double-precision General Sparse Matrix Class
Definition: _dgsmatrix.hpp:3
dssmatrix & identity()
void shallow_copy(const _dssmatrix &)
void diet(const double=DBL_MIN)
friend _dssmatrix operator-(const dssmatrix &)
friend _dcovector operator*(const dssmatrix &, const dcovector &)
_drovector row(const CPPL_INT &) const
(DO NOT USE) Smart-temporary Real Double-precision Row Vector Class
Definition: _drovector.hpp:3
(DO NOT USE) Smart-temporary Real Double-precision General Dence Matrix Class
Definition: _dgematrix.hpp:3
Real Double-precision General Band Matrix Class.
Definition: dgbmatrix.hpp:3
dssmatrix & operator*=(const double &)
void clear()
void write(const char *) const
_dsymatrix to_dsymatrix() const
friend double damax(const dssmatrix &)
dssmatrix & operator=(const dssmatrix &)
dssmatrix & zero()
(DO NOT USE) Smart-temporary Real Double-precision General Band Matrix Class
Definition: _dgbmatrix.hpp:3
(DO NOT USE) Smart-temporary Real Double-precision Symmetric Matrix Class
Definition: _dsymatrix.hpp:3
Real Double-precision Column Vector Class.
Definition: dcovector.hpp:3
friend _dssmatrix _(dssmatrix &)
dssmatrix & operator-=(const dssmatrix &)
Real Double-precision Symmetric Sparse Matrix Class.
Definition: dssmatrix.hpp:3
CPPL_INT n
matrix column size
Definition: dssmatrix.hpp:10
CPPL_INT const & m
matrix row size
Definition: dssmatrix.hpp:9
(DO NOT USE) Smart-temporary Real Double-precision Column Vector Class
Definition: _dcovector.hpp:3
(DO NOT USE) Smart-temporary Complex Double-precision Hermitian Sparse Matrix Class ...
Definition: _zhsmatrix.hpp:3
void read(const char *)
friend std::ostream & operator<<(std::ostream &, const dssmatrix &)
CPPL_INT diag_front()
void stretch(const CPPL_INT &)
friend const dssmatrix & operator+(const dssmatrix &)
friend _dssmatrix t(const dssmatrix &)