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

DenseStorage.h

00001 /* OOQP                                                               *
00002  * Authors: E. Michael Gertz, Stephen J. Wright                       *
00003  * (C) 2001 University of Chicago. See Copyright Notification in OOQP */
00004 
00005 #ifndef DENSEDOUBLEMATRIX_H
00006 #define DENSEDOUBLEMATRIX_H
00007 
00008 #include "DoubleMatrix.h"
00009 #include "OoqpVectorHandle.h"
00010 
00011 extern int DenseStorageInstances;
00012 
00016 class DenseStorage : public DoubleStorage {
00017 private:
00018   DenseStorage() {};
00019 protected:
00020   int neverDeleteElts;
00021 public:
00022   int m;
00023   int n;
00024   double ** M;
00025 
00026   DenseStorage( int m, int n );
00027   DenseStorage( double A[], int m, int n );
00028 
00029   virtual ~DenseStorage();
00030 
00031   virtual void getSize( int& m, int& n );
00032 
00033 
00034 
00035   virtual void getDiagonal( OoqpVector& vec );
00036   virtual void setToDiagonal( OoqpVector& vec );
00037 
00038   virtual void atPutDense( int row, int col, double * A, int lda,
00039                            int rowExtent, int colExtent );
00040 
00041   virtual void fromGetDense( int row, int col, double * A, int lda,
00042                              int rowExtent, int colExtent );
00043   
00044   virtual void atPutZeros( int row, int col,
00045                            int rowExtent, int colExtent );
00046 
00047   virtual void atAddOuterProductOf( int row, int col, double alpha,
00048                                     double * x, int incx, int nx );
00049 
00050 
00051   virtual void addToDiagonalAt( double alpha, double x[], int incx,
00052                                 int idiag, int extent );
00053   virtual void fromGetSpRow( int row, int col,
00054                              double A[], int lenA, int irowA[], int& nnz,
00055                              int rowExtent, int& info );
00056 
00057   virtual void ColumnScale( OoqpVector& vec );
00058   virtual void RowScale( OoqpVector& vec );
00059   virtual void SymmetricScale( OoqpVector& vec );
00060   virtual void scalarMult( double num);
00061 
00062   virtual void atPutSpRow( int col, double A[], int lenA, int irowA[],
00063                            int& info );
00064 
00065   virtual void putSparseTriple( int irow[], int len, int jcol[], double A[], 
00066                                 int& info );
00067 
00068   virtual void atPutDiagonal(   int idiag, OoqpVector& v );
00069   virtual void fromGetDiagonal( int idiag, OoqpVector& v );
00070   virtual void atPutDiagonal( int idiag, double x[], int incx, int extent );
00071 };
00072   
00073 #endif

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