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