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