Go to the documentation of this file.00001
00002
00003
00004
00005 #include "arch.h"
00006 #ifndef _LA_SYMM_MAT_DOUBLE_H_
00007 #define _LA_SYMM_MAT_DOUBLE_H_
00008
00009 #include LA_LOWER_TRIANG_MAT_DOUBLE_H
00010
00011 class DLLIMPORT LaSymmMatDouble
00012 {
00013 LaLowerTriangMatDouble lower_data_;
00014 static int debug_;
00015 static int* info_;
00016
00017 public:
00018
00019
00020
00021
00022
00023
00024
00025
00026 inline LaSymmMatDouble();
00027 inline LaSymmMatDouble(int, int);
00028 inline LaSymmMatDouble(double*, int, int);
00029 inline LaSymmMatDouble(const LaSymmMatDouble &);
00030 inline ~LaSymmMatDouble();
00031
00032
00033
00034 inline LaSymmMatDouble& ref(LaSymmMatDouble &);
00035 LaSymmMatDouble& copy(const LaSymmMatDouble &);
00036 LaSymmMatDouble& operator=(const double &);
00037 inline LaSymmMatDouble& operator=(const LaSymmMatDouble &);
00038 inline double& operator()(int, int);
00039 inline const double& operator()(int, int) const;
00040
00041 operator LaGenMatDouble();
00042 operator LaLowerTriangMatDouble();
00043
00044 inline int size(int) const ;
00045 inline int inc(int d) const ;
00046 inline int gdim(int d) const ;
00047 inline double* addr() const
00048 {
00049 return lower_data_.addr();
00050 }
00051 inline int ref_count() const
00052 {
00053 return lower_data_.ref_count();
00054 }
00055 inline LaIndex index(int d) const
00056 {
00057 return lower_data_.index(d);
00058 }
00059 inline int shallow() const
00060 {
00061 return lower_data_.shallow();
00062 }
00063
00064 inline int debug() const
00065 {
00066 return debug_;
00067 }
00068 inline int debug(int d)
00069 {
00070 return debug_ = d;
00071 }
00072
00073 inline LaSymmMatDouble& resize(const LaSymmMatDouble&);
00075 inline LaSymmMatDouble& resize(int m, int n);
00076
00077 inline const LaSymmMatDouble& info() const
00078 {
00079 int *t = info_;
00080 *t = 1;
00081 return *this;
00082 }
00083
00084
00085
00086 friend std::ostream& operator<<(std::ostream&, const LaSymmMatDouble&);
00087
00088 };
00089
00090
00091
00092
00093 inline LaSymmMatDouble::LaSymmMatDouble() : lower_data_()
00094 {
00095 }
00096
00097 inline LaSymmMatDouble::LaSymmMatDouble(int i, int j) : lower_data_(i, j)
00098 {
00099 }
00100
00101 inline LaSymmMatDouble::LaSymmMatDouble(double *d, int i, int j): lower_data_(d, i, j)
00102 {
00103 }
00104
00105 inline LaSymmMatDouble::LaSymmMatDouble(const LaSymmMatDouble &S)
00106 {
00107 lower_data_.copy(S.lower_data_);
00108 }
00109
00110
00111
00112 inline LaSymmMatDouble::~LaSymmMatDouble()
00113 {
00114
00115 }
00116
00117
00118
00119 inline double& LaSymmMatDouble::operator()(int i, int j)
00120 {
00121
00122 if (j > i)
00123 return (lower_data_(j, i));
00124 else
00125 return (lower_data_(i, j));
00126
00127 }
00128
00129 inline const double& LaSymmMatDouble::operator()(int i, int j) const
00130 {
00131
00132 if (j > i)
00133 return (lower_data_(j, i));
00134 else
00135 return (lower_data_(i, j));
00136
00137 }
00138
00139 inline LaSymmMatDouble& LaSymmMatDouble::ref(LaSymmMatDouble &S)
00140 {
00141 lower_data_.ref(S.lower_data_);
00142
00143 return *this;
00144 }
00145
00146 inline LaSymmMatDouble& LaSymmMatDouble::resize(const LaSymmMatDouble &S)
00147 {
00148 lower_data_.resize(S.lower_data_);
00149
00150 return *this;
00151 }
00152
00153 inline LaSymmMatDouble& LaSymmMatDouble::resize(int m, int n)
00154 {
00155 lower_data_.resize(m, n);
00156
00157 return *this;
00158 }
00159
00160 inline LaSymmMatDouble& LaSymmMatDouble::operator=(const LaSymmMatDouble &S)
00161 {
00162 return copy(S);
00163 }
00164
00165 inline int LaSymmMatDouble::size(int d) const
00166 {
00167 return(lower_data_.size(d));
00168 }
00169
00170 inline int LaSymmMatDouble::inc(int d) const
00171 {
00172 return(lower_data_.inc(d));
00173 }
00174
00175 inline int LaSymmMatDouble::gdim(int d) const
00176 {
00177 return(lower_data_.gdim(d));
00178 }
00179
00180 #endif