00001 #ifndef SYMMATRIX 00002 #define SYMMATRIX 00003 00013 #include "LinearOperator.hh" 00014 #include <iostream> 00015 00016 class IotrMask; 00017 00021 class SymMatrix : public LinearOperator { 00022 protected: 00023 SymMatrix( int size ) : mN(size) {}; 00024 int mN; 00025 public: 00027 virtual void mult( double alpha, const IotrVector & x, 00028 double beta, IotrVector & y ) const = 0; 00029 virtual void symMaskedMult( double alpha, const IotrMask & mask, 00030 const IotrVector & x, 00031 double beta, IotrVector & y ) const = 0; 00033 int size() const { return mN; }; 00045 virtual void writefToStream( std::ostream& out, 00046 const char format[] ) const = 0; 00051 virtual void symCopyFromSparseCols( const int irow[], const int kcol[], 00052 const double M[], int & has_upper ) = 0; 00053 virtual void symCopyToSparseCols( int irow[], int len, 00054 int kcol[], 00055 double M[], int & morei ) const = 0; 00056 00057 virtual double lowerBoundEigenvalue() const = 0; 00058 00059 virtual void inspect( const char * name = 0, 00060 const char * filename = 0) const = 0; 00061 virtual void inspectAsMatlab( const char * name = 0, 00062 const char * filename = 0) const = 0; 00063 00064 }; 00065 00066 typedef Handle<SymMatrix> SymMatrixHandle; 00067 00068 #endif