Actual source code: taomat.h

  1: #ifndef TAOMATRIX_H
  2: #define TAOMATRIX_H

  4: #include "tao_basictypes.h"

  6: class TaoIndexSet;
  7: class TaoVec;

  9: typedef enum {/* matrix structure */
 10:               TAOMAT_SYMMETRIC_PSD=1,
 11:               TAOMAT_SYMMETRIC=2,
 12:               TAOMAT_UNSYMMETRIC=3 } TaoMatStructure;

 14: class TaoMat {

 16: protected:

 18:                 //  TaoMatStructure tmatstructure;

 20: public:

 22:   virtual ~TaoMat(void){};

 24:   void* MatObject;

 26:   int SetStructure(TaoMatStructure);

 28:   virtual int Compatible(TaoVec*, TaoVec*, TaoTruth*);

 30:   /** Get the dimension of the vector spaces */
 31:   virtual int GetDimensions( int*, int * );
 32:   virtual int Multiply(TaoVec*,TaoVec*);
 33:   virtual int MultiplyTranspose(TaoVec*,TaoVec*);

 35:   virtual int SetDiagonal(TaoVec*);
 36:   virtual int AddDiagonal(TaoVec*);
 37:   virtual int GetDiagonal(TaoVec*);
 38:   virtual int ShiftDiagonal(double);

 40:   virtual int RowScale(TaoVec*);
 41:   virtual int ColScale(TaoVec*);

 43:   virtual int Norm1(double*);

 45:   virtual int D_Fischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *,
 46:                           TaoVec *, TaoVec *, TaoVec *, TaoVec *);
 47:   virtual int D_SFischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *, double,
 48:                          TaoVec *, TaoVec *, TaoVec *, TaoVec *, TaoVec *);

 50:   virtual int CreateReducedMatrix(TaoIndexSet*,TaoIndexSet*,TaoMat**);
 51:   virtual int SetReducedMatrix(TaoMat*,TaoIndexSet*,TaoIndexSet*);

 53:   virtual int View();

 55:   /* These two routines are not needed.  A linear solver may be used instead */
 56:   virtual int Presolve();
 57:   virtual int Solve(TaoVec*,TaoVec*,TaoTruth*);

 59: };

 61: #endif