00001
00003
00004 class zhematrix
00005 {
00006 private:
00008 long N;
00009 std::complex<double>* Array;
00010 std::complex<double>** Darray;
00011
00012 public:
00014 long const& n;
00015 std::complex<double>* const& array;
00016 std::complex<double>** const& darray;
00017
00019 inline zhematrix();
00020 inline zhematrix(const zhematrix&);
00021 inline zhematrix(const _zhematrix&);
00022 inline zhematrix(const zgbmatrix&);
00023 inline zhematrix(const _zgbmatrix&);
00024 inline zhematrix(const long&);
00025 inline zhematrix(const char*);
00026 inline ~zhematrix();
00027
00029 inline __zhecomplex operator()(const long&, const long&);
00030 inline std::complex<double> operator()(const long&, const long&) const;
00031 inline void set(const long&, const long&, const std::complex<double>&) const;
00032 inline friend std::ostream& operator<<(std::ostream&, const zhematrix&);
00033 inline void write(const char*) const;
00034 inline void read(const char*);
00035
00037 inline void complete() const;
00038 inline void clear();
00039 inline void zero();
00040 inline void identity();
00041 inline void chsign();
00042 inline void copy(const zhematrix&);
00043 inline void shallow_copy(const _zhematrix&);
00044 inline void resize(const long&);
00045 inline friend void swap(zhematrix&, zhematrix&);
00046 inline friend _zhematrix _(zhematrix&);
00047
00049 inline friend _zhematrix t(const zhematrix&);
00050 inline friend _zgematrix i(const zhematrix&);
00051 inline friend _zhematrix conj(const zhematrix&);
00052 inline friend _zhematrix conjt(const zhematrix&);
00053
00055 inline long zhesv(zgematrix&);
00056 inline long zhesv(zcovector&);
00057 inline long zheev(std::vector<double>&, const bool&);
00058 inline long zheev(std::vector<double>&, std::vector<zcovector>&);
00059 inline long zheev(std::vector<double>&, std::vector<zrovector>&);
00060
00062 inline friend const zhematrix& operator+(const zhematrix&);
00063 inline friend _zhematrix operator-(const zhematrix&);
00064
00066 inline zhematrix& operator=(const zhematrix&);
00067 inline zhematrix& operator+=(const zhematrix&);
00068 inline zhematrix& operator-=(const zhematrix&);
00069 inline zhematrix& operator*=(const zhematrix&);
00071 inline zhematrix& operator=(const _zhematrix&);
00072 inline zhematrix& operator+=(const _zhematrix&);
00073 inline zhematrix& operator-=(const _zhematrix&);
00074 inline zhematrix& operator*=(const _zhematrix&);
00076 inline zhematrix& operator*=(const double&);
00077 inline zhematrix& operator/=(const double&);
00078
00080 inline friend _zhematrix operator+(const zhematrix&, const zhematrix&);
00081 inline friend _zhematrix operator+(const zhematrix&, const _zhematrix&);
00082 inline friend _zhematrix operator+(const _zhematrix&, const zhematrix&);
00083
00084 inline friend _zgematrix operator+(const zhematrix&, const zgematrix&);
00085 inline friend _zgematrix operator+(const zhematrix&, const _zgematrix&);
00086 inline friend _zgematrix operator+(const zgematrix&, const zhematrix&);
00087 inline friend _zgematrix operator+(const _zgematrix&, const zhematrix&);
00088
00089 inline friend _zgematrix operator+(const zhematrix&, const zgbmatrix&);
00090 inline friend _zgematrix operator+(const zhematrix&, const _zgbmatrix&);
00091 inline friend _zgematrix operator+(const zgbmatrix&, const zhematrix&);
00092 inline friend _zgematrix operator+(const _zgbmatrix&, const zhematrix&);
00093
00094 inline friend _zgematrix operator+(const zhematrix&, const zssmatrix&);
00095 inline friend _zgematrix operator+(const zhematrix&, const _zssmatrix&);
00096 inline friend _zgematrix operator+(const zssmatrix&, const zhematrix&);
00097 inline friend _zgematrix operator+(const _zssmatrix&, const zhematrix&);
00098
00100 inline friend _zhematrix operator-(const zhematrix&, const zhematrix&);
00101 inline friend _zhematrix operator-(const zhematrix&, const _zhematrix&);
00102 inline friend _zhematrix operator-(const _zhematrix&, const zhematrix&);
00103
00104 inline friend _zgematrix operator-(const zhematrix&, const zgematrix&);
00105 inline friend _zgematrix operator-(const zhematrix&, const _zgematrix&);
00106 inline friend _zgematrix operator-(const zgematrix&, const zhematrix&);
00107 inline friend _zgematrix operator-(const _zgematrix&, const zhematrix&);
00108
00109 inline friend _zgematrix operator-(const zhematrix&, const zgbmatrix&);
00110 inline friend _zgematrix operator-(const zhematrix&, const _zgbmatrix&);
00111 inline friend _zgematrix operator-(const zgbmatrix&, const zhematrix&);
00112 inline friend _zgematrix operator-(const _zgbmatrix&, const zhematrix&);
00113
00114 inline friend _zgematrix operator-(const zhematrix&, const zssmatrix&);
00115 inline friend _zgematrix operator-(const zhematrix&, const _zssmatrix&);
00116 inline friend _zgematrix operator-(const zssmatrix&, const zhematrix&);
00117 inline friend _zgematrix operator-(const _zssmatrix&, const zhematrix&);
00118
00120 inline friend _zgematrix operator*(const _zhematrix&, const zhematrix&);
00121 inline friend _zgematrix operator*(const zhematrix&, const _zhematrix&);
00122 inline friend _zgematrix operator*(const zhematrix&, const zhematrix&);
00123
00124 inline friend _zgematrix operator*(const zhematrix&, const zgematrix&);
00125 inline friend _zgematrix operator*(const zhematrix&, const _zgematrix&);
00126 inline friend _zgematrix operator*(const zgematrix&, const zhematrix&);
00127 inline friend _zgematrix operator*(const _zgematrix&, const zhematrix&);
00128
00129 inline friend _zgematrix operator*(const zhematrix&, const zgbmatrix&);
00130 inline friend _zgematrix operator*(const zhematrix&, const _zgbmatrix&);
00131 inline friend _zgematrix operator*(const zgbmatrix&, const zhematrix&);
00132 inline friend _zgematrix operator*(const _zgbmatrix&, const zhematrix&);
00133
00134 inline friend _zgematrix operator*(const zhematrix&, const zssmatrix&);
00135 inline friend _zgematrix operator*(const zhematrix&, const _zssmatrix&);
00136 inline friend _zgematrix operator*(const zssmatrix&, const zhematrix&);
00137 inline friend _zgematrix operator*(const _zssmatrix&, const zhematrix&);
00138
00139 inline friend _zcovector operator*(const zhematrix&, const zcovector&);
00140 inline friend _zcovector operator*(const zhematrix&, const _zcovector&);
00141
00142 inline friend _zrovector operator*(const zrovector&, const zhematrix&);
00143 inline friend _zrovector operator*(const _zrovector&, const zhematrix&);
00144
00145 inline friend _zhematrix operator*(const zhematrix&, const double&);
00146 inline friend _zhematrix operator*(const double&, const zhematrix&);
00147 inline friend _zgematrix operator*(const zhematrix&, const std::complex<double>&);
00148 inline friend _zgematrix operator*(const std::complex<double>&, const zhematrix&);
00149
00151 inline friend _zhematrix operator/(const zhematrix&, const double&);
00152 inline friend _zgematrix operator/(const zhematrix&, const std::complex<double>&);
00153
00155 friend class zgematrix;
00156 friend class _zgematrix;
00157 friend class zgbmatrix;
00158 friend class _zgbmatrix;
00159 friend class _zhematrix;
00160 friend class zcovector;
00161 friend class _zcovector;
00162 friend class zrovector;
00163 friend class _zrovector;
00164 };