CPPLapack
 All Classes Files Functions Variables Friends Pages
dgematrix.hpp
Go to the documentation of this file.
1 //=============================================================================
2 //! Real Double-precision General Dence Matrix Class
3 class dgematrix
4 {
5 public:
6  ///////////////////////////////////////////////
7  /////////////////// objects ///////////////////
8  ///////////////////////////////////////////////
9  CPPL_INT m; //!< matrix row size
10  CPPL_INT n; //!< matrix column size
11  double* array; //!< 1D array to store matrix data
12  double** darray; //!< array of pointers of column head addresses
13 
14  ///////////////////////////////////////////////
15  ///////////////// constructors ////////////////
16  ///////////////////////////////////////////////
17  inline dgematrix();
18  inline dgematrix(const dgematrix&);
19  inline dgematrix(const _dgematrix&);
20  inline dgematrix(const CPPL_INT&, const CPPL_INT&);
21  inline dgematrix(const char*);
22  inline ~dgematrix(); //destructor
23 
24  ///////////////////////////////////////////////
25  ////////////////// functions //////////////////
26  ///////////////////////////////////////////////
27  //////// cast ////////
28  inline _zgematrix to_zgematrix() const;
29 
30  //////// io ////////
31  inline double& operator()(const CPPL_INT&, const CPPL_INT&);
32  inline double operator()(const CPPL_INT&, const CPPL_INT&) const;
33  inline dgematrix& set(const CPPL_INT&, const CPPL_INT&, const double&); //const;
34  inline friend std::ostream& operator<<(std::ostream&, const dgematrix&);
35  inline void write(const char*) const;
36  inline void read(const char*);
37 
38  //////// misc ////////
39  inline void clear();
40  inline dgematrix& zero();
41  inline dgematrix& identity();
42  inline void chsign();
43  inline void copy(const dgematrix&);
44  inline void shallow_copy(const _dgematrix&);
45  inline dgematrix& resize(const CPPL_INT&, const CPPL_INT&);
46  inline _drovector row(const CPPL_INT&) const;
47  inline _dcovector col(const CPPL_INT&) const;
48  inline friend void swap(dgematrix&, dgematrix&);
49  inline friend _dgematrix _(dgematrix&);
50 
51  //////// calc ////////
52  inline friend _dgematrix t(const dgematrix&);
53  inline friend _dgematrix i(const dgematrix&);
54  inline friend void idamax(CPPL_INT&, CPPL_INT&, const dgematrix&);
55  inline friend double damax(const dgematrix&);
56 
57  //////// lapack ////////
58  inline CPPL_INT dgesv(dgematrix&);
59  inline CPPL_INT dgesv(dcovector&);
60  inline CPPL_INT dgels(dgematrix&);
61  inline CPPL_INT dgels(dcovector&);
62  inline CPPL_INT dgels(dgematrix&, drovector&);
63  inline CPPL_INT dgels(dcovector&, double&);
64  //inline CPPL_INT dgelss(dcovector&);
65  inline CPPL_INT dgelss(dcovector&, dcovector&, CPPL_INT&, const double);
66  inline CPPL_INT dgelss(dgematrix&, dcovector&, CPPL_INT&, const double);
67  inline CPPL_INT dgelsd(dcovector&, dcovector&, CPPL_INT&, const double);
68  //inline CPPL_INT dgelsd(dgematrix&, dcovector&, CPPL_INT&, const double);
69  inline CPPL_INT dgeev(std::vector<double>&, std::vector<double>&);
70  inline CPPL_INT dgeev(zcovector&);
71  inline CPPL_INT dgeev(std::vector<double>&, std::vector<double>&, std::vector<dcovector>&, std::vector<dcovector>&);
72  inline CPPL_INT dgeev(std::vector<double>&, std::vector<double>&, std::vector<drovector>&, std::vector<drovector>&);
73  inline CPPL_INT dggev(dgematrix&, std::vector<double>&, std::vector<double>&);
74  inline CPPL_INT dggev(dgematrix&, std::vector<double>&, std::vector<double>&, std::vector<dcovector>&, std::vector<dcovector>&);
75  inline CPPL_INT dggev(dgematrix&, std::vector<double>&, std::vector<double>&, std::vector<drovector>&, std::vector<drovector>&);
76  inline CPPL_INT dgesvd(dgbmatrix&);
77  inline CPPL_INT dgesvd(dcovector&, dgematrix&, dgematrix&);
78  inline CPPL_INT dgglse(dgematrix&, dcovector&, dcovector&, dcovector&);
79 
80  ///////////////////////////////////////////////
81  ///////////// numerical operators /////////////
82  ///////////////////////////////////////////////
83  //////// = ////////
84  inline dgematrix& operator=(const dgematrix&);
85  inline dgematrix& operator=(const _dgematrix&);
86 
87  //////// += ////////
88  inline dgematrix& operator+=(const dgematrix&);
89  inline dgematrix& operator+=(const _dgematrix&);
90  inline dgematrix& operator+=(const dsymatrix&);
91  inline dgematrix& operator+=(const _dsymatrix&);
92  inline dgematrix& operator+=(const dgbmatrix&);
93  inline dgematrix& operator+=(const _dgbmatrix&);
94  inline dgematrix& operator+=(const dgsmatrix&);
95  inline dgematrix& operator+=(const _dgsmatrix&);
96  inline dgematrix& operator+=(const dssmatrix&);
97  inline dgematrix& operator+=(const _dssmatrix&);
98 
99  //////// -= ////////
100  inline dgematrix& operator-=(const dgematrix&);
101  inline dgematrix& operator-=(const _dgematrix&);
102  inline dgematrix& operator-=(const dsymatrix&);
103  inline dgematrix& operator-=(const _dsymatrix&);
104  inline dgematrix& operator-=(const dgbmatrix&);
105  inline dgematrix& operator-=(const _dgbmatrix&);
106  inline dgematrix& operator-=(const dgsmatrix&);
107  inline dgematrix& operator-=(const _dgsmatrix&);
108  inline dgematrix& operator-=(const dssmatrix&);
109  inline dgematrix& operator-=(const _dssmatrix&);
110 
111  //////// *= ////////
112  inline dgematrix& operator*=(const dgematrix&);
113  inline dgematrix& operator*=(const _dgematrix&);
114  inline dgematrix& operator*=(const dsymatrix&);
115  inline dgematrix& operator*=(const _dsymatrix&);
116  inline dgematrix& operator*=(const dgbmatrix&);
117  inline dgematrix& operator*=(const _dgbmatrix&);
118  inline dgematrix& operator*=(const dgsmatrix&);
119  inline dgematrix& operator*=(const _dgsmatrix&);
120  inline dgematrix& operator*=(const dssmatrix&);
121  inline dgematrix& operator*=(const _dssmatrix&);
122  inline dgematrix& operator*=(const double&);
123 
124  //////// /= ////////
125  inline dgematrix& operator/=(const double&);
126 
127  //////// unary ////////
128  inline friend const dgematrix& operator+(const dgematrix&);
129  inline friend _dgematrix operator-(const dgematrix&);
130 
131  //////// + ////////
132  inline friend _dgematrix operator+(const dgematrix&, const dgematrix&);
133  inline friend _dgematrix operator+(const dgematrix&, const _dgematrix&);
134  inline friend _dgematrix operator+(const dgematrix&, const dsymatrix&);
135  inline friend _dgematrix operator+(const dgematrix&, const _dsymatrix&);
136  inline friend _dgematrix operator+(const dgematrix&, const dgbmatrix&);
137  inline friend _dgematrix operator+(const dgematrix&, const _dgbmatrix&);
138  inline friend _dgematrix operator+(const dgematrix&, const dgsmatrix&);
139  inline friend _dgematrix operator+(const dgematrix&, const _dgsmatrix&);
140  inline friend _dgematrix operator+(const dgematrix&, const dssmatrix&);
141  inline friend _dgematrix operator+(const dgematrix&, const _dssmatrix&);
142 
143  //////// - ////////
144  inline friend _dgematrix operator-(const dgematrix&, const dgematrix&);
145  inline friend _dgematrix operator-(const dgematrix&, const _dgematrix&);
146  inline friend _dgematrix operator-(const dgematrix&, const dsymatrix&);
147  inline friend _dgematrix operator-(const dgematrix&, const _dsymatrix&);
148  inline friend _dgematrix operator-(const dgematrix&, const dgbmatrix&);
149  inline friend _dgematrix operator-(const dgematrix&, const _dgbmatrix&);
150  inline friend _dgematrix operator-(const dgematrix&, const dgsmatrix&);
151  inline friend _dgematrix operator-(const dgematrix&, const _dgsmatrix&);
152  inline friend _dgematrix operator-(const dgematrix&, const dssmatrix&);
153  inline friend _dgematrix operator-(const dgematrix&, const _dssmatrix&);
154 
155  //////// * ////////
156  inline friend _dcovector operator*(const dgematrix&, const dcovector&);
157  inline friend _dcovector operator*(const dgematrix&, const _dcovector&);
158  inline friend _dgematrix operator*(const dgematrix&, const dgematrix&);
159  inline friend _dgematrix operator*(const dgematrix&, const _dgematrix&);
160  inline friend _dgematrix operator*(const dgematrix&, const dsymatrix&);
161  inline friend _dgematrix operator*(const dgematrix&, const _dsymatrix&);
162  inline friend _dgematrix operator*(const dgematrix&, const dgbmatrix&);
163  inline friend _dgematrix operator*(const dgematrix&, const _dgbmatrix&);
164  inline friend _dgematrix operator*(const dgematrix&, const dgsmatrix&);
165  inline friend _dgematrix operator*(const dgematrix&, const _dgsmatrix&);
166  inline friend _dgematrix operator*(const dgematrix&, const dssmatrix&);
167  inline friend _dgematrix operator*(const dgematrix&, const _dssmatrix&);
168  inline friend _dgematrix operator*(const dgematrix&, const double&);
169 
170  //////// / ////////
171  inline friend _dgematrix operator/(const dgematrix&, const double&);
172 
173  //////// % ////////
174  inline friend _drovector operator%(const dgematrix&, const dgematrix&);
175 
176  //////// double ////////
177  inline friend _dgematrix operator*(const double&, const dgematrix&);
178 
179  //////// hadamard ////////
180  inline friend _dgematrix hadamard(const dgematrix&, const dgematrix&);
181 };
void clear()
dgematrix & resize(const CPPL_INT &, const CPPL_INT &)
Real Double-precision General Sparse Matrix Class.
Definition: dgsmatrix.hpp:3
dgematrix & identity()
friend void idamax(CPPL_INT &, CPPL_INT &, const dgematrix &)
CPPL_INT m
matrix row size
Definition: dgematrix.hpp:9
double ** darray
array of pointers of column head addresses
Definition: dgematrix.hpp:12
double * array
1D array to store matrix data
Definition: dgematrix.hpp:11
CPPL_INT dgeev(std::vector< double > &, std::vector< double > &)
(DO NOT USE) Smart-temporary Real Double-precision Symmetric Sparse Matrix Class
Definition: _dssmatrix.hpp:3
friend _dgematrix hadamard(const dgematrix &, const dgematrix &)
void read(const char *)
friend _dgematrix t(const dgematrix &)
dgematrix & zero()
friend void swap(dgematrix &, dgematrix &)
CPPL_INT dggev(dgematrix &, std::vector< double > &, std::vector< double > &)
double & operator()(const CPPL_INT &, const CPPL_INT &)
Definition: dgematrix-io.hpp:3
CPPL_INT n
matrix column size
Definition: dgematrix.hpp:10
Real Double-precision General Dence Matrix Class.
Definition: dgematrix.hpp:3
dgematrix & operator=(const dgematrix &)
CPPL_INT dgesvd(dgbmatrix &)
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
CPPL_INT dgesv(dgematrix &)
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
CPPL_INT dgelss(dcovector &, dcovector &, CPPL_INT &, const double)
dgematrix & operator*=(const dgematrix &)
(DO NOT USE) Smart-temporary Complex Double-precision General Dence Matrix Class
Definition: _zgematrix.hpp:3
(DO NOT USE) Smart-temporary Real Double-precision Row Vector Class
Definition: _drovector.hpp:3
CPPL_INT dgglse(dgematrix &, dcovector &, dcovector &, dcovector &)
(DO NOT USE) Smart-temporary Real Double-precision General Dence Matrix Class
Definition: _dgematrix.hpp:3
void copy(const dgematrix &)
Real Double-precision General Band Matrix Class.
Definition: dgbmatrix.hpp:3
void shallow_copy(const _dgematrix &)
CPPL_INT dgels(dgematrix &)
dgematrix & set(const CPPL_INT &, const CPPL_INT &, const double &)
_drovector row(const CPPL_INT &) const
CPPL_INT dgelsd(dcovector &, dcovector &, CPPL_INT &, const double)
_dcovector col(const CPPL_INT &) const
(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
_zgematrix to_zgematrix() const
friend double damax(const dgematrix &)
Real Double-precision Symmetric Sparse Matrix Class.
Definition: dssmatrix.hpp:3
dgematrix & operator-=(const dgematrix &)
friend _dgematrix i(const dgematrix &)
friend _dgematrix _(dgematrix &)
Complex Double-precision Column Vector Class.
Definition: zcovector.hpp:3
friend const dgematrix & operator+(const dgematrix &)
friend _drovector operator%(const dgematrix &, const dgematrix &)
(DO NOT USE) Smart-temporary Real Double-precision Column Vector Class
Definition: _dcovector.hpp:3
friend _dcovector operator*(const dgematrix &, const dcovector &)
dgematrix & operator+=(const dgematrix &)
friend _dgematrix operator-(const dgematrix &)
dgematrix & operator/=(const double &)
void write(const char *) const
friend std::ostream & operator<<(std::ostream &, const dgematrix &)
friend _dgematrix operator/(const dgematrix &, const double &)