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