Main Page   Modules   Class Hierarchy   Compound List   File List   Compound Members   File Members   Related Pages  

DenseSymMatrix.hh

Go to the documentation of this file.
00001 #ifndef DENSESYMMATRIX
00002 #define DENSESYMMATRIX
00003 
00014 #include "SymMatrix.hh"
00015 #include "IotrRefCount.hh"
00016 #include "SimpleArrayData.hh"
00017 #include "SimpleIntData.hh"
00018 
00023 class DenseSymMatrix : public SymMatrix {
00024 protected:
00026   SimpleArrayDataHandle data;
00029   double ** mMat;
00030   int mLeadingDimension;
00031 public:
00033   DenseSymMatrix( int size );
00035   DenseSymMatrix( double * v, int size );
00037   virtual ~DenseSymMatrix();
00038 
00039 
00040   double * operator[]( int i ) { return mMat[i]; }
00041   const double * operator[]( int i ) const { return mMat[i]; }
00042   bool operator==( const DenseSymMatrix & MM ) const
00043   {
00044     double ** M = MM.mMat;
00045     for( int i = 0; i < mN; i++ ) {
00046       for( int j = 0; j <= i; j++ ) {
00047         if( mMat[i][j] != M[i][j] ) return false;
00048       }
00049     }
00050     return true;
00051   }
00052   bool operator!=( const DenseSymMatrix & MM ) const
00053   {
00054     return !(*this == MM);
00055   }
00056 
00058   double * elements() { return mMat[0]; };
00059   const double * elements() const { return mMat[0]; };
00061   double **Mat() { return mMat; }; 
00062   const double * const * Mat() const { return mMat; };
00064   int leadingDimension() const { return mLeadingDimension; };
00065 
00067   virtual void clearRange( int istart, int jstart,
00068                            int iextent, int jextent );
00081   virtual void writefToStream( std::ostream& out,
00082                                const char format[] ) const;
00084   virtual void mult( double alpha, const IotrVector & x,
00085                      double beta,  IotrVector & y ) const;
00086   virtual void symMaskedMult( double alpha, const IotrMask & mask,
00087                               const IotrVector & x,
00088                               double beta,  IotrVector & y ) const;
00091   virtual void symCopyFromSparseCols( const int irow[], const int kcol[],
00092                                       const double M[], int & has_upper );
00093   virtual void symCopyToSparseCols( int irow[], int len, 
00094                                     int kcol[],
00095                                     double M[], int & morei ) const;
00096   virtual void inspect(const char * name_in = 0,
00097                        const char * filename = 0 ) const;
00098   virtual void inspectAsMatlab(const char * name_in = 0,
00099                                const char * filename = 0 ) const;
00100   virtual double lowerBoundEigenvalue() const;
00101 };
00102 
00103 typedef Handle<DenseSymMatrix> DenseSymMatrixHandle;
00104 
00105 #endif

Generated on Wed Aug 27 10:03:41 2003 for iotr by doxygen1.2.18