00001
00003 class zgematrix
00004 {
00005 private:
00007 long M;
00008 long N;
00009 std::complex<double>* Array;
00010 std::complex<double>** Darray;
00011
00012 public:
00014 long const& m;
00015 long const& n;
00016 std::complex<double>* const& array;
00017 std::complex<double>** const& darray;
00018
00020 inline zgematrix();
00021 inline zgematrix(const zgematrix&);
00022 inline zgematrix(const _zgematrix&);
00023 inline zgematrix(const zgbmatrix&);
00024 inline zgematrix(const _zgbmatrix&);
00025 inline zgematrix(const zhematrix&);
00026 inline zgematrix(const _zhematrix&);
00027 inline zgematrix(const zssmatrix&);
00028 inline zgematrix(const _zssmatrix&);
00029 inline zgematrix(const long&, const long&);
00030 inline zgematrix(const char*);
00031 inline ~zgematrix();
00032
00034 inline std::complex<double>& operator()(const long&, const long&);
00035 inline std::complex<double> operator()(const long&, const long&) const;
00036 inline void set(const long&, const long&, const std::complex<double>&) const;
00037 inline friend std::ostream& operator<<(std::ostream&, const zgematrix&);
00038 inline void write(const char *) const;
00039 inline void read(const char *);
00040
00042 inline void clear();
00043 inline void zero();
00044 inline void identity();
00045 inline void chsign();
00046 inline void copy(const zgematrix&);
00047 inline void shallow_copy(const _zgematrix&);
00048 inline void resize(const long&, const long&);
00049 inline friend void swap(zgematrix&, zgematrix&);
00050 inline friend _zgematrix _(zgematrix&);
00051
00053 inline friend _zgematrix t(const zgematrix&);
00054 inline friend _zgematrix i(const zgematrix&);
00055 inline friend _zgematrix conj(const zgematrix&);
00056 inline friend _zgematrix conjt(const zgematrix&);
00057 inline friend void idamax(long&, long&, const zgematrix&);
00058 inline friend std::complex<double> damax(const zgematrix&);
00059
00061 inline long zgesv(zgematrix&);
00062 inline long zgesv(zcovector&);
00063 inline long zgels(zgematrix&);
00064 inline long zgels(zcovector&);
00065 inline long zgels(zgematrix&, drovector&);
00066 inline long zgels(zcovector&, double&);
00067 inline long zgelss(zcovector&, dcovector&, long&, const double);
00068 inline long zgelss(zgematrix&, dcovector&, long&, const double);
00069 inline long zgeev(std::vector< std::complex<double> >&);
00070 inline long zgeev(std::vector< std::complex<double> >&,
00071 std::vector<zcovector>&);
00072 inline long zgeev(std::vector< std::complex<double> >&,
00073 std::vector<zrovector>&);
00074
00075 inline long zgesvd(dcovector&, zgematrix&, zgematrix&);
00076
00078 inline friend const zgematrix& operator+(const zgematrix&);
00079 inline friend _zgematrix operator-(const zgematrix&);
00080
00082 inline zgematrix& operator=(const zgematrix&);
00083 inline zgematrix& operator+=(const zgematrix&);
00084 inline zgematrix& operator-=(const zgematrix&);
00085 inline zgematrix& operator*=(const zgematrix&);
00087 inline zgematrix& operator=(const _zgematrix&);
00088 inline zgematrix& operator+=(const _zgematrix&);
00089 inline zgematrix& operator-=(const _zgematrix&);
00090 inline zgematrix& operator*=(const _zgematrix&);
00092 inline zgematrix& operator=(const zgbmatrix&);
00093 inline zgematrix& operator+=(const zgbmatrix&);
00094 inline zgematrix& operator-=(const zgbmatrix&);
00095 inline zgematrix& operator*=(const zgbmatrix&);
00097 inline zgematrix& operator=(const _zgbmatrix&);
00098 inline zgematrix& operator+=(const _zgbmatrix&);
00099 inline zgematrix& operator-=(const _zgbmatrix&);
00100 inline zgematrix& operator*=(const _zgbmatrix&);
00102 inline zgematrix& operator=(const zhematrix& mat);
00103 inline zgematrix& operator+=(const zhematrix& mat);
00104 inline zgematrix& operator-=(const zhematrix& mat);
00105 inline zgematrix& operator*=(const zhematrix& mat);
00107 inline zgematrix& operator=(const _zhematrix& mat);
00108 inline zgematrix& operator+=(const _zhematrix& mat);
00109 inline zgematrix& operator-=(const _zhematrix& mat);
00110 inline zgematrix& operator*=(const _zhematrix& mat);
00112 inline zgematrix& operator*=(const double&);
00113 inline zgematrix& operator/=(const double&);
00115 inline zgematrix& operator*=(const std::complex<double>&);
00116 inline zgematrix& operator/=(const std::complex<double>&);
00117
00119 inline friend _zgematrix operator+(const zgematrix&, const zgematrix&);
00120 inline friend _zgematrix operator+(const zgematrix&, const _zgematrix&);
00121 inline friend _zgematrix operator+(const _zgematrix&, const zgematrix&);
00122
00123 inline friend _zgematrix operator+(const zgematrix&, const zgbmatrix&);
00124 inline friend _zgematrix operator+(const zgematrix&, const _zgbmatrix&);
00125 inline friend _zgematrix operator+(const zgbmatrix&, const zgematrix&);
00126 inline friend _zgematrix operator+(const _zgbmatrix&, const zgematrix&);
00127
00128 inline friend _zgematrix operator+(const zgematrix&, const zhematrix&);
00129 inline friend _zgematrix operator+(const zgematrix&, const _zhematrix&);
00130 inline friend _zgematrix operator+(const zhematrix&, const zgematrix&);
00131 inline friend _zgematrix operator+(const _zhematrix&, const zgematrix&);
00132
00133 inline friend _zgematrix operator+(const zgematrix&, const zssmatrix&);
00134 inline friend _zgematrix operator+(const zgematrix&, const _zssmatrix&);
00135 inline friend _zgematrix operator+(const zssmatrix&, const zgematrix&);
00136 inline friend _zgematrix operator+(const _zssmatrix&, const zgematrix&);
00137
00139 inline friend _zgematrix operator-(const zgematrix&, const zgematrix&);
00140 inline friend _zgematrix operator-(const zgematrix&, const _zgematrix&);
00141 inline friend _zgematrix operator-(const _zgematrix&, const zgematrix&);
00142
00143 inline friend _zgematrix operator-(const zgematrix&, const zgbmatrix&);
00144 inline friend _zgematrix operator-(const zgematrix&, const _zgbmatrix&);
00145 inline friend _zgematrix operator-(const zgbmatrix&, const zgematrix&);
00146 inline friend _zgematrix operator-(const _zgbmatrix&, const zgematrix&);
00147
00148 inline friend _zgematrix operator-(const zgematrix&, const zhematrix&);
00149 inline friend _zgematrix operator-(const zgematrix&, const _zhematrix&);
00150 inline friend _zgematrix operator-(const zhematrix&, const zgematrix&);
00151 inline friend _zgematrix operator-(const _zhematrix&, const zgematrix&);
00152
00153 inline friend _zgematrix operator-(const zgematrix&, const zssmatrix&);
00154 inline friend _zgematrix operator-(const zgematrix&, const _zssmatrix&);
00155 inline friend _zgematrix operator-(const zssmatrix&, const zgematrix&);
00156 inline friend _zgematrix operator-(const _zssmatrix&, const zgematrix&);
00157
00159 inline friend _zgematrix operator*(const zgematrix&, const zgematrix&);
00160 inline friend _zgematrix operator*(const zgematrix&, const _zgematrix&);
00161 inline friend _zgematrix operator*(const _zgematrix&, const zgematrix&);
00162
00163 inline friend _zgematrix operator*(const zgematrix&, const zgbmatrix&);
00164 inline friend _zgematrix operator*(const zgematrix&, const _zgbmatrix&);
00165 inline friend _zgematrix operator*(const zgbmatrix&, const zgematrix&);
00166 inline friend _zgematrix operator*(const _zgbmatrix&, const zgematrix&);
00167
00168 inline friend _zgematrix operator*(const zhematrix&, const zgematrix&);
00169 inline friend _zgematrix operator*(const _zhematrix&, const zgematrix&);
00170 inline friend _zgematrix operator*(const zgematrix&, const zhematrix&);
00171 inline friend _zgematrix operator*(const zgematrix&, const _zhematrix&);
00172
00173 inline friend _zgematrix operator*(const zssmatrix&, const zgematrix&);
00174 inline friend _zgematrix operator*(const _zssmatrix&, const zgematrix&);
00175 inline friend _zgematrix operator*(const zgematrix&, const zssmatrix&);
00176 inline friend _zgematrix operator*(const zgematrix&, const _zssmatrix&);
00177
00178 inline friend _zcovector operator*(const zgematrix&, const zcovector&);
00179 inline friend _zcovector operator*(const zgematrix&, const _zcovector&);
00180
00181 inline friend _zrovector operator*(const zrovector&, const zgematrix&);
00182 inline friend _zrovector operator*(const _zrovector&, const zgematrix&);
00183
00184 inline friend _zgematrix operator*(const zgematrix&, const double&);
00185 inline friend _zgematrix operator*(const double&, const zgematrix&);
00186
00187 inline friend _zgematrix operator*(const zgematrix&, const std::complex<double>&);
00188 inline friend _zgematrix operator*(const std::complex<double>&, const zgematrix&);
00189
00191 inline friend _zgematrix operator/(const zgematrix&, const double&);
00192 inline friend _zgematrix operator/(const zgematrix&, const std::complex<double>&);
00193
00195 friend class _zgematrix;
00196 friend class zgbmatrix;
00197 friend class _zgbmatrix;
00198 friend class zhematrix;
00199 friend class _zhematrix;
00200 friend class zssmatrix;
00201 friend class _zssmatrix;
00202 friend class zcovector;
00203 friend class _zcovector;
00204 friend class zrovector;
00205 friend class _zrovector;
00206 };