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