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