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