00001
00002
00003 class dgematrix
00004 {
00005 private:
00006
00007 long M;
00008 long N;
00009 long Ml;
00010 long Nl;
00011 long Desc[9];
00012 double* Array;
00013
00014 public:
00015
00016 long const& m;
00017 long const& n;
00018 long const& ml;
00019 long const& nl;
00020 long* const& desc;
00021 double* const& array;
00022
00023
00024 inline dgematrix();
00025 inline dgematrix(const dgematrix&);
00026 inline dgematrix(const _dgematrix&);
00027
00028
00029 inline dgematrix(const long&, const long&);
00030 inline ~dgematrix();
00031
00032
00033 inline CPPSL_double operator()(const long&, const long&);
00034 inline double operator()(const long&, const long&) const;
00035 inline void set(const long&, const long&, const double&) const;
00036 inline friend std::ostream& operator<<(std::ostream&, const dgematrix&);
00037
00038
00039 inline void clear();
00040 inline void zero();
00041 inline void identity();
00042 inline void chsign();
00043 inline void copy(const dgematrix&);
00044 inline void shallow_copy(const _dgematrix&);
00045 inline void resize(const long&, const long&);
00046 inline friend void swap(dgematrix&, dgematrix&);
00047
00048
00049 inline void transpose();
00050 inline friend _dgematrix t(const dgematrix&);
00051
00052
00053
00054
00055
00056 inline long dgesv(dgematrix&);
00057 inline long dgesv(dcovector&);
00058
00059
00060
00061
00062
00063
00064
00065
00066 inline friend const dgematrix& operator+(const dgematrix&);
00067 inline friend _dgematrix operator-(const dgematrix&);
00068
00069
00070 inline dgematrix& operator=(const dgematrix&);
00071 inline dgematrix& operator+=(const dgematrix&);
00072 inline dgematrix& operator-=(const dgematrix&);
00073 inline dgematrix& operator*=(const dgematrix&);
00074
00075 inline dgematrix& operator=(const _dgematrix&);
00076 inline dgematrix& operator+=(const _dgematrix&);
00077 inline dgematrix& operator-=(const _dgematrix&);
00078 inline dgematrix& operator*=(const _dgematrix&);
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090 inline dgematrix& operator*=(const double&);
00091 inline dgematrix& operator/=(const double&);
00092
00093
00094 inline friend _dgematrix operator+(const dgematrix&, const dgematrix&);
00095 inline friend _dgematrix operator+(const dgematrix&, const _dgematrix&);
00096 inline friend _dgematrix operator+(const _dgematrix&, const dgematrix&);
00097
00098
00099
00100
00101
00102
00103
00104 inline friend _dgematrix operator-(const dgematrix&, const dgematrix&);
00105 inline friend _dgematrix operator-(const dgematrix&, const _dgematrix&);
00106 inline friend _dgematrix operator-(const _dgematrix&, const dgematrix&);
00107
00108
00109
00110
00111
00112
00113
00114 inline friend _dgematrix operator*(const dgematrix&, const dgematrix&);
00115 inline friend _dgematrix operator*(const dgematrix&, const _dgematrix&);
00116 inline friend _dgematrix operator*(const _dgematrix&, const dgematrix&);
00117
00118
00119
00120
00121
00122
00123 inline friend _dcovector operator*(const dgematrix&, const dcovector&);
00124 inline friend _dcovector operator*(const dgematrix&, const _dcovector&);
00125
00126 inline friend _drovector operator*(const drovector&, const dgematrix&);
00127 inline friend _drovector operator*(const _drovector&, const dgematrix&);
00128
00129 inline friend _dgematrix operator*(const dgematrix&, const double&);
00130 inline friend _dgematrix operator*(const double&, const dgematrix&);
00131
00132
00133 inline friend _dgematrix operator/(const dgematrix&, const double&);
00134
00135
00136 friend class _dgematrix;
00137
00138
00139 friend class dcovector;
00140 friend class _dcovector;
00141 friend class drovector;
00142 friend class _drovector;
00143 };