VERB_code_2.3
zgematrix.hpp
1 //=============================================================================
3 class zgematrix
4 {
5 private:
7  long M;
8  long N;
9  std::complex<double>* Array;
10  std::complex<double>** Darray;
11 
12 public:
14  long const& m;
15  long const& n;
16  std::complex<double>* const& array;
17  std::complex<double>** const& darray;
18 
20  inline zgematrix();
21  inline zgematrix(const zgematrix&);
22  inline zgematrix(const _zgematrix&);
23  inline zgematrix(const zgbmatrix&);
24  inline zgematrix(const _zgbmatrix&);
25  inline zgematrix(const zhematrix&);
26  inline zgematrix(const _zhematrix&);
27  inline zgematrix(const zssmatrix&);
28  inline zgematrix(const _zssmatrix&);
29  inline zgematrix(const long&, const long&);
30  inline zgematrix(const char*);
31  inline ~zgematrix(); //destructor
32 
34  inline std::complex<double>& operator()(const long&, const long&);
35  inline std::complex<double> operator()(const long&, const long&) const;
36  inline void set(const long&, const long&, const std::complex<double>&) const;
37  inline friend std::ostream& operator<<(std::ostream&, const zgematrix&);
38  inline void write(const char *) const;
39  inline void read(const char *);
40 
42  inline void clear();
43  inline void zero();
44  inline void identity();
45  inline void chsign();
46  inline void copy(const zgematrix&);
47  inline void shallow_copy(const _zgematrix&);
48  inline void resize(const long&, const long&);
49  inline friend void swap(zgematrix&, zgematrix&);
50  inline friend _zgematrix _(zgematrix&);
51 
53  inline friend _zgematrix t(const zgematrix&);
54  inline friend _zgematrix i(const zgematrix&);
55  inline friend _zgematrix conj(const zgematrix&);
56  inline friend _zgematrix conjt(const zgematrix&);
57  inline friend void idamax(long&, long&, const zgematrix&);
58  inline friend std::complex<double> damax(const zgematrix&);
59 
61  inline long zgesv(zgematrix&);
62  inline long zgesv(zcovector&);
63  inline long zgels(zgematrix&);
64  inline long zgels(zcovector&);
65  inline long zgels(zgematrix&, drovector&);
66  inline long zgels(zcovector&, double&);
67  inline long zgelss(zcovector&, dcovector&, long&, const double);
68  inline long zgelss(zgematrix&, dcovector&, long&, const double);
69  inline long zgeev(std::vector< std::complex<double> >&);
70  inline long zgeev(std::vector< std::complex<double> >&,
71  std::vector<zcovector>&);
72  inline long zgeev(std::vector< std::complex<double> >&,
73  std::vector<zrovector>&);
74  //inline long zgegv()
75  inline long zgesvd(dcovector&, zgematrix&, zgematrix&);
76 
78  inline friend const zgematrix& operator+(const zgematrix&);
79  inline friend _zgematrix operator-(const zgematrix&);
80 
82  inline zgematrix& operator=(const zgematrix&);
83  inline zgematrix& operator+=(const zgematrix&);
84  inline zgematrix& operator-=(const zgematrix&);
85  inline zgematrix& operator*=(const zgematrix&);
87  inline zgematrix& operator=(const _zgematrix&);
88  inline zgematrix& operator+=(const _zgematrix&);
89  inline zgematrix& operator-=(const _zgematrix&);
90  inline zgematrix& operator*=(const _zgematrix&);
92  inline zgematrix& operator=(const zgbmatrix&);
93  inline zgematrix& operator+=(const zgbmatrix&);
94  inline zgematrix& operator-=(const zgbmatrix&);
95  inline zgematrix& operator*=(const zgbmatrix&);
97  inline zgematrix& operator=(const _zgbmatrix&);
98  inline zgematrix& operator+=(const _zgbmatrix&);
99  inline zgematrix& operator-=(const _zgbmatrix&);
100  inline zgematrix& operator*=(const _zgbmatrix&);
102  inline zgematrix& operator=(const zhematrix& mat);
103  inline zgematrix& operator+=(const zhematrix& mat);
104  inline zgematrix& operator-=(const zhematrix& mat);
105  inline zgematrix& operator*=(const zhematrix& mat);
107  inline zgematrix& operator=(const _zhematrix& mat);
108  inline zgematrix& operator+=(const _zhematrix& mat);
109  inline zgematrix& operator-=(const _zhematrix& mat);
110  inline zgematrix& operator*=(const _zhematrix& mat);
112  inline zgematrix& operator*=(const double&);
113  inline zgematrix& operator/=(const double&);
115  inline zgematrix& operator*=(const std::complex<double>&);
116  inline zgematrix& operator/=(const std::complex<double>&);
117 
119  inline friend _zgematrix operator+(const zgematrix&, const zgematrix&);
120  inline friend _zgematrix operator+(const zgematrix&, const _zgematrix&);
121  inline friend _zgematrix operator+(const _zgematrix&, const zgematrix&);
122 
123  inline friend _zgematrix operator+(const zgematrix&, const zgbmatrix&);
124  inline friend _zgematrix operator+(const zgematrix&, const _zgbmatrix&);
125  inline friend _zgematrix operator+(const zgbmatrix&, const zgematrix&);
126  inline friend _zgematrix operator+(const _zgbmatrix&, const zgematrix&);
127 
128  inline friend _zgematrix operator+(const zgematrix&, const zhematrix&);
129  inline friend _zgematrix operator+(const zgematrix&, const _zhematrix&);
130  inline friend _zgematrix operator+(const zhematrix&, const zgematrix&);
131  inline friend _zgematrix operator+(const _zhematrix&, const zgematrix&);
132 
133  inline friend _zgematrix operator+(const zgematrix&, const zssmatrix&);
134  inline friend _zgematrix operator+(const zgematrix&, const _zssmatrix&);
135  inline friend _zgematrix operator+(const zssmatrix&, const zgematrix&);
136  inline friend _zgematrix operator+(const _zssmatrix&, const zgematrix&);
137 
139  inline friend _zgematrix operator-(const zgematrix&, const zgematrix&);
140  inline friend _zgematrix operator-(const zgematrix&, const _zgematrix&);
141  inline friend _zgematrix operator-(const _zgematrix&, const zgematrix&);
142 
143  inline friend _zgematrix operator-(const zgematrix&, const zgbmatrix&);
144  inline friend _zgematrix operator-(const zgematrix&, const _zgbmatrix&);
145  inline friend _zgematrix operator-(const zgbmatrix&, const zgematrix&);
146  inline friend _zgematrix operator-(const _zgbmatrix&, const zgematrix&);
147 
148  inline friend _zgematrix operator-(const zgematrix&, const zhematrix&);
149  inline friend _zgematrix operator-(const zgematrix&, const _zhematrix&);
150  inline friend _zgematrix operator-(const zhematrix&, const zgematrix&);
151  inline friend _zgematrix operator-(const _zhematrix&, const zgematrix&);
152 
153  inline friend _zgematrix operator-(const zgematrix&, const zssmatrix&);
154  inline friend _zgematrix operator-(const zgematrix&, const _zssmatrix&);
155  inline friend _zgematrix operator-(const zssmatrix&, const zgematrix&);
156  inline friend _zgematrix operator-(const _zssmatrix&, const zgematrix&);
157 
159  inline friend _zgematrix operator*(const zgematrix&, const zgematrix&);
160  inline friend _zgematrix operator*(const zgematrix&, const _zgematrix&);
161  inline friend _zgematrix operator*(const _zgematrix&, const zgematrix&);
162 
163  inline friend _zgematrix operator*(const zgematrix&, const zgbmatrix&);
164  inline friend _zgematrix operator*(const zgematrix&, const _zgbmatrix&);
165  inline friend _zgematrix operator*(const zgbmatrix&, const zgematrix&);
166  inline friend _zgematrix operator*(const _zgbmatrix&, const zgematrix&);
167 
168  inline friend _zgematrix operator*(const zhematrix&, const zgematrix&);
169  inline friend _zgematrix operator*(const _zhematrix&, const zgematrix&);
170  inline friend _zgematrix operator*(const zgematrix&, const zhematrix&);
171  inline friend _zgematrix operator*(const zgematrix&, const _zhematrix&);
172 
173  inline friend _zgematrix operator*(const zssmatrix&, const zgematrix&);
174  inline friend _zgematrix operator*(const _zssmatrix&, const zgematrix&);
175  inline friend _zgematrix operator*(const zgematrix&, const zssmatrix&);
176  inline friend _zgematrix operator*(const zgematrix&, const _zssmatrix&);
177 
178  inline friend _zcovector operator*(const zgematrix&, const zcovector&);
179  inline friend _zcovector operator*(const zgematrix&, const _zcovector&);
180 
181  inline friend _zrovector operator*(const zrovector&, const zgematrix&);
182  inline friend _zrovector operator*(const _zrovector&, const zgematrix&);
183 
184  inline friend _zgematrix operator*(const zgematrix&, const double&);
185  inline friend _zgematrix operator*(const double&, const zgematrix&);
186 
187  inline friend _zgematrix operator*(const zgematrix&, const std::complex<double>&);
188  inline friend _zgematrix operator*(const std::complex<double>&, const zgematrix&);
189 
191  inline friend _zgematrix operator/(const zgematrix&, const double&);
192  inline friend _zgematrix operator/(const zgematrix&, const std::complex<double>&);
193 
195  friend class _zgematrix;
196  friend class zgbmatrix;
197  friend class _zgbmatrix;
198  friend class zhematrix;
199  friend class _zhematrix;
200  friend class zssmatrix;
201  friend class _zssmatrix;
202  friend class zcovector;
203  friend class _zcovector;
204  friend class zrovector;
205  friend class _zrovector;
206 };
long zgesvd(dcovector &, zgematrix &, zgematrix &)
Definition: zgematrix-lapack.hpp:561
void resize(const long &, const long &)
Definition: zgematrix-misc.hpp:126
(DO NOT USE) Smart-temporary Complex Double-precision Hermitian Matrix Class
Definition: _zhematrix.hpp:3
std::complex< double > **const & darray
array of pointers of column head addresses (readable)
Definition: zgematrix.hpp:17
void shallow_copy(const _zgematrix &)
Definition: zgematrix-misc.hpp:103
void identity()
Definition: zgematrix-misc.hpp:38
long const & m
matrix row size (readable)
Definition: zgematrix.hpp:14
(DO NOT USE) Smart-temporary Complex Double-precision Sparse Matrix Class
Definition: _zssmatrix.hpp:3
void copy(const zgematrix &)
Definition: zgematrix-misc.hpp:72
zgematrix & operator/=(const double &)
Definition: zgematrix-double.hpp:16
friend _zgematrix conj(const zgematrix &)
Definition: zgematrix-calc.hpp:52
zgematrix & operator-=(const zgematrix &)
Definition: zgematrix-zgematrix.hpp:45
zgematrix & operator=(const zgematrix &)
Definition: zgematrix-zgematrix.hpp:3
long const & n
matrix column size (readable)
Definition: zgematrix.hpp:15
long zgelss(zcovector &, dcovector &, long &, const double)
Definition: zgematrix-lapack.hpp:297
friend _zgematrix i(const zgematrix &)
Definition: zgematrix-calc.hpp:21
zgematrix & operator*=(const zgematrix &)
Definition: zgematrix-zgematrix.hpp:68
friend std::complex< double > damax(const zgematrix &)
Definition: zgematrix-calc.hpp:105
~zgematrix()
Definition: zgematrix-constructor.hpp:316
Complex Double-precision General Dence Matrix Class.
Definition: zgematrix.hpp:3
Real Double-precision Row Vector Class.
Definition: drovector.hpp:3
void chsign()
Definition: zgematrix-misc.hpp:60
friend _zgematrix _(zgematrix &)
Definition: zgematrix-misc.hpp:170
Complex Double-precision Row Vector Class.
Definition: zrovector.hpp:3
(DO NOT USE) Smart-temporary Complex Double-precision Row Vector Class
Definition: _zrovector.hpp:3
(DO NOT USE) Smart-temporary Complex Double-precision General Dence Matrix Class
Definition: _zgematrix.hpp:3
friend void idamax(long &, long &, const zgematrix &)
Definition: zgematrix-calc.hpp:91
long zgels(zgematrix &)
Definition: zgematrix-lapack.hpp:72
void clear()
Definition: zgematrix-misc.hpp:3
friend _zgematrix operator*(const zgematrix &, const zgematrix &)
Definition: zgematrix-zgematrix.hpp:153
zgematrix()
Definition: zgematrix-constructor.hpp:3
void zero()
Definition: zgematrix-misc.hpp:26
long zgesv(zgematrix &)
Definition: zgematrix-lapack.hpp:5
friend _zgematrix operator/(const zgematrix &, const double &)
Definition: zgematrix-double.hpp:48
Complex Double-precision General Band Matrix Class.
Definition: zgbmatrix.hpp:3
friend _zgematrix operator-(const zgematrix &)
Definition: zgematrix-unary.hpp:15
std::complex< double > & operator()(const long &, const long &)
Definition: zgematrix-io.hpp:3
friend _zgematrix t(const zgematrix &)
Definition: zgematrix-calc.hpp:3
(DO NOT USE) Smart-temporary Complex Double-precision General Band Matrix Class
Definition: _zgbmatrix.hpp:3
zgematrix & operator+=(const zgematrix &)
Definition: zgematrix-zgematrix.hpp:22
friend void swap(zgematrix &, zgematrix &)
Definition: zgematrix-misc.hpp:154
Complex Double-precision Hermitian Matrix Class [L-type (UPLO=L) Strage].
Definition: zhematrix.hpp:4
Real Double-precision Column Vector Class.
Definition: dcovector.hpp:3
std::complex< double > *const & array
1D array to store matrix data (readable)
Definition: zgematrix.hpp:16
Complex Double-precision Column Vector Class.
Definition: zcovector.hpp:3
(DO NOT USE) Smart-temporary Complex Double-precision Column Vector Class
Definition: _zcovector.hpp:3
friend _zgematrix conjt(const zgematrix &)
Definition: zgematrix-calc.hpp:69
Complex Double-precision Sparse Matrix Class.
Definition: zssmatrix.hpp:3
friend const zgematrix & operator+(const zgematrix &)
Definition: zgematrix-unary.hpp:3
void set(const long &, const long &, const std::complex< double > &) const
Definition: zgematrix-io.hpp:53
long zgeev(std::vector< std::complex< double > > &)
Definition: zgematrix-lapack.hpp:403