00001
00002
00003
00004 class zhematrix
00005 {
00006 public:
00007
00008
00009
00010 long const& m;
00011 long n;
00012 comple* array;
00013 comple** darray;
00014
00015
00016
00017
00018 inline zhematrix();
00019 inline zhematrix(const zhematrix&);
00020 inline zhematrix(const _zhematrix&);
00021 inline zhematrix(const long&);
00022 inline zhematrix(const char*);
00023 inline ~zhematrix();
00024
00025
00026
00027
00028
00029 inline _zgematrix to_zgematrix() const;
00030
00031
00032 inline zhecomplex operator()(const long&, const long&);
00033 inline comple operator()(const long&, const long&) const;
00034 inline zhematrix& set(const long&, const long&, const comple&);
00035 inline friend std::ostream& operator<<(std::ostream&, const zhematrix&);
00036 inline void write(const char*) const;
00037 inline void read(const char*);
00038
00039
00040 inline void complete() const;
00041 inline void clear();
00042 inline zhematrix& zero();
00043 inline zhematrix& identity();
00044 inline void chsign();
00045 inline void copy(const zhematrix&);
00046 inline void shallow_copy(const _zhematrix&);
00047 inline void resize(const long&);
00048 inline _zrovector row(const long&) const;
00049 inline _zcovector col(const long&) const;
00050 inline friend void swap(zhematrix&, zhematrix&);
00051 inline friend _zhematrix _(zhematrix&);
00052
00053
00054 inline friend _zhematrix t(const zhematrix&);
00055 inline friend _zgematrix i(const zhematrix&);
00056 inline friend _zhematrix conj(const zhematrix&);
00057 inline friend _zhematrix conjt(const zhematrix&);
00058
00059
00060 inline long zhesv(zgematrix&);
00061 inline long zhesv(zcovector&);
00062 inline long zheev(std::vector<double>&, const bool&);
00063 inline long zheev(std::vector<double>&, std::vector<zcovector>&);
00064 inline long zheev(std::vector<double>&, std::vector<zrovector>&);
00065
00066
00067
00068
00069
00070 inline zhematrix& operator=(const zhematrix&);
00071 inline zhematrix& operator=(const _zhematrix&);
00072
00073
00074 inline zhematrix& operator+=(const zhematrix&);
00075 inline zhematrix& operator+=(const _zhematrix&);
00076
00077
00078 inline zhematrix& operator-=(const zhematrix&);
00079 inline zhematrix& operator-=(const _zhematrix&);
00080
00081
00082 inline zhematrix& operator*=(const zhematrix&);
00083 inline zhematrix& operator*=(const _zhematrix&);
00084 inline zhematrix& operator*=(const double&);
00085
00086
00087 inline zhematrix& operator/=(const double&);
00088
00089
00090 inline friend const zhematrix& operator+(const zhematrix&);
00091 inline friend _zhematrix operator-(const zhematrix&);
00092
00093
00094 inline friend _zgematrix operator+(const zhematrix&, const zgematrix&);
00095 inline friend _zgematrix operator+(const zhematrix&, const _zgematrix&);
00096 inline friend _zhematrix operator+(const zhematrix&, const zhematrix&);
00097 inline friend _zhematrix operator+(const zhematrix&, const _zhematrix&);
00098 inline friend _zgematrix operator+(const zhematrix&, const zgbmatrix&);
00099 inline friend _zgematrix operator+(const zhematrix&, const _zgbmatrix&);
00100 inline friend _zgematrix operator+(const zhematrix&, const zgsmatrix&);
00101 inline friend _zgematrix operator+(const zhematrix&, const _zgsmatrix&);
00102 inline friend _zgematrix operator+(const zhematrix&, const zhsmatrix&);
00103 inline friend _zgematrix operator+(const zhematrix&, const _zhsmatrix&);
00104
00105
00106 inline friend _zgematrix operator-(const zhematrix&, const zgematrix&);
00107 inline friend _zgematrix operator-(const zhematrix&, const _zgematrix&);
00108 inline friend _zhematrix operator-(const zhematrix&, const zhematrix&);
00109 inline friend _zhematrix operator-(const zhematrix&, const _zhematrix&);
00110 inline friend _zgematrix operator-(const zhematrix&, const zgbmatrix&);
00111 inline friend _zgematrix operator-(const zhematrix&, const _zgbmatrix&);
00112 inline friend _zgematrix operator-(const zhematrix&, const zgsmatrix&);
00113 inline friend _zgematrix operator-(const zhematrix&, const _zgsmatrix&);
00114 inline friend _zgematrix operator-(const zhematrix&, const zhsmatrix&);
00115 inline friend _zgematrix operator-(const zhematrix&, const _zhsmatrix&);
00116
00117
00118 inline friend _zcovector operator*(const zhematrix&, const zcovector&);
00119 inline friend _zcovector operator*(const zhematrix&, const _zcovector&);
00120 inline friend _zgematrix operator*(const zhematrix&, const zgematrix&);
00121 inline friend _zgematrix operator*(const zhematrix&, const _zgematrix&);
00122 inline friend _zgematrix operator*(const zhematrix&, const zhematrix&);
00123 inline friend _zgematrix operator*(const zhematrix&, const _zhematrix&);
00124 inline friend _zgematrix operator*(const zhematrix&, const zgbmatrix&);
00125 inline friend _zgematrix operator*(const zhematrix&, const _zgbmatrix&);
00126 inline friend _zgematrix operator*(const zhematrix&, const zgsmatrix&);
00127 inline friend _zgematrix operator*(const zhematrix&, const _zgsmatrix&);
00128 inline friend _zgematrix operator*(const zhematrix&, const zhsmatrix&);
00129 inline friend _zgematrix operator*(const zhematrix&, const _zhsmatrix&);
00130 inline friend _zhematrix operator*(const zhematrix&, const double&);
00131 inline friend _zgematrix operator*(const zhematrix&, const comple&);
00132
00133
00134 inline friend _zhematrix operator/(const zhematrix&, const double&);
00135 inline friend _zgematrix operator/(const zhematrix&, const comple&);
00136
00137
00138 inline friend _zhematrix operator*(const double&, const zhematrix&);
00139 inline friend _zgematrix operator*(const comple&, const zhematrix&);
00140 };