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