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