Main Page   Modules   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

DoubleMatrix.h

Go to the documentation of this file.
00001 /* OOQP                                                               *
00002  * Authors: E. Michael Gertz, Stephen J. Wright                       *
00003  * (C) 2001 University of Chicago. See Copyright Notification in OOQP */
00004 
00005 #ifndef DOUBLEMATRIX_H
00006 #define DOUBLEMATRIX_H
00007 
00012 #include <string.h>
00013 #include <memory.h>
00014 #include <iostream.h>
00015 #include "OoqpVectorHandle.h"
00016 #include "IotrRefCount.h"
00017 
00018 class DoubleLinearSolver;
00019 
00024 class DoubleStorage : public IotrRefCount {
00025 public:
00026   DoubleStorage() { };
00027 
00028   virtual void atPutDense( int row, int col, double * A, int lda,
00029                            int rowExtent, int colExtent ) = 0;
00030   virtual void fromGetDense( int row, int col, double * A, int lda,
00031                              int rowExtent, int colExtent ) = 0;
00032   virtual void atPutSpRow( int row, double A[], int lenA, int jcolA[],
00033                            int& info ) = 0;
00034 
00035   virtual void fromGetSpRow( int row, int col,
00036                              double A[], int lenA, int jcolA[], int& nnz,
00037                              int colExtent, int& info ) = 0;
00038 
00039   virtual void getSize( int& m, int& n )  = 0;
00040 
00041   virtual void getDiagonal( OoqpVector& vec ) = 0;
00042   virtual void setToDiagonal( OoqpVector& vec ) = 0;
00043 
00044   virtual void atPutDiagonal( int idiag, OoqpVector& x ) = 0;
00045   virtual void fromGetDiagonal( int idiag, OoqpVector& x ) = 0;
00046   virtual void SymmetricScale ( OoqpVector& vec ) = 0;
00047   virtual void ColumnScale ( OoqpVector& vec ) = 0;
00048   virtual void RowScale ( OoqpVector& vec ) = 0;
00049   virtual void scalarMult( double num) = 0;
00050   virtual ~DoubleStorage() {};
00051 };
00052 
00056 class DoubleMatrix : public IotrRefCount {
00057 public:
00058   DoubleMatrix() {}
00059 
00061   virtual int isKindOf( int matrixType ) = 0;
00062 
00074   virtual void fromGetDense( int row, int col, double * A, int lda,
00075                              int rowExtent, int colExtent ) = 0;
00076 
00089   virtual void fromGetSpRow( int row, int col,
00090                              double A[], int lenA, int jcolA[], int& nnz,
00091                              int colExtent, int& info ) = 0;
00092 
00101   virtual void putSparseTriple( int irow[], int len, int jcol[], double A[], 
00102                                 int& info ) = 0;
00103 
00105   virtual void mult ( double beta,  OoqpVector& y,
00106                       double alpha, OoqpVector& x ) = 0;
00107 
00109   virtual void transMult ( double beta,   OoqpVector& y,
00110                            double alpha,  OoqpVector& x ) = 0;
00111 
00114   virtual double abmaxnorm() = 0;
00115 
00117   virtual void writeToStream(ostream& out) const = 0;
00118 
00120   virtual void getDiagonal( OoqpVector& vec ) = 0;
00122   virtual void setToDiagonal( OoqpVector& vec ) = 0;
00123 
00131   virtual void atPutDiagonal( int idiag, OoqpVector& x ) = 0;
00139   virtual void fromGetDiagonal( int idiag, OoqpVector& x )= 0;
00140 
00146   virtual void SymmetricScale ( OoqpVector& vec ) = 0;
00147   virtual void ColumnScale ( OoqpVector& vec ) = 0;
00148   virtual void RowScale ( OoqpVector& vec ) = 0;
00149   virtual void scalarMult( double num) = 0;
00150 
00151   virtual void getSize( int& m, int& n )  = 0;
00152 
00153   virtual ~DoubleMatrix() {};
00154 };
00155 
00159 class SymMatrix    : public DoubleMatrix {
00160 public:
00161 
00177   virtual void symAtPutSubmatrix( int destRow, int destCol,
00178                                   DoubleMatrix& M,
00179                                   int srcRow, int srcCol,
00180                                   int rowExtent, int colExtent ) = 0;
00181   
00185   virtual void randomizePSD(double * seed) = 0;
00186 
00195   virtual void symAtPutSpRow( int col, double A[], int lenA, int irowA[],
00196                               int& info ) = 0;
00198   virtual int size() = 0;
00199 };
00200 
00204 class GenMatrix    : public DoubleMatrix {
00205 public:
00216   virtual void atPutSubmatrix( int destRow, int destCol, 
00217                                DoubleMatrix& M,
00218                                int srcRow, int srcCol,
00219                                int rowExtent, int colExtent ) = 0;
00220 
00225   virtual void atPutDense( int row, int col, double * A, int lda,
00226                            int rowExtent, int colExtent ) = 0;
00227 
00233   virtual void atPutSpRow( int col, double A[], int lenA, int jcolA[],
00234                            int& info ) = 0;
00235 
00242   virtual void randomize(double alpha, double beta, double * seed) = 0;
00243 };
00244 
00245 #endif

Generated on Mon May 24 17:40:46 2004 for OOQP by doxygen1.2.18