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

DenseGenMatrix.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 DENSEGENMATRIX_H
00006 #define DENSEGENMATRIX_H
00007 
00008 #include "DenseStorageHandle.h"
00009 #include "DenseGenMatrixHandle.h"
00010 #include "DenseSymMatrixHandle.h"
00011 
00012 class DoubleLinearSolver;
00013 
00017 class DenseGenMatrix : public GenMatrix {
00018 public:
00019   DenseStorageHandle mStorage;
00020 
00021   DenseGenMatrix( int size );
00022   DenseGenMatrix( int m, int n );
00023   DenseGenMatrix( double A[], int m, int n );
00024   
00025   virtual int isKindOf( int matType );
00026 
00027   virtual void getSize( int& m, int& n );
00028 
00029   virtual void atPutDense( int row, int col, double * A, int lda,
00030                            int rowExtent, int colExtent );
00031 
00037   virtual void atPutZeros( int row, int col,
00038                            int rowExtent, int colExtent );
00039 
00040 
00041   virtual void getDiagonal( OoqpVector& vec );
00042   virtual void setToDiagonal( OoqpVector& vec );
00043 
00044   virtual void atPutSubmatrix( int destRow, int destCol,
00045                                DoubleMatrix& M,
00046                                int srcRow, int srcCol,
00047                                int rowExtent, int colExtent );
00048   virtual void atPutSpRow( int row, double A[], int lenA, int jcolA[],
00049                            int& info );
00050 
00051   virtual void putSparseTriple( int irow[], int len, int jcol[], double A[], 
00052                                 int& info );
00053 
00054   virtual void mult ( double beta,  OoqpVector& y,
00055                       double alpha, OoqpVector& x );
00056   virtual void mult ( double beta,  double y[], int incy,
00057                       double alpha, double x[], int incx );
00058 
00059   virtual void transMult ( double beta,  OoqpVector& y,
00060                            double alpha, OoqpVector& x );
00061   virtual void transMult ( double beta,  double y[], int incy,
00062                            double alpha, double x[], int incx );
00063 
00064   virtual void fromGetDense( int row, int col, double * A, int lda,
00065                              int rowExtent, int colExtent );
00066 
00067   virtual void fromGetSpRow( int row, int col,
00068                              double A[], int lenA, int jcolA[], int& nnz,
00069                              int rowExtent, int& info );
00070 
00071   virtual void ColumnScale( OoqpVector& vec );
00072   virtual void RowScale( OoqpVector& vec );
00073   virtual void SymmetricScale( OoqpVector &vec);
00074   virtual void scalarMult( double num);
00075 
00076   virtual double abmaxnorm();
00077   virtual void writeToStream(ostream& out) const;
00078   virtual void randomize( double alpha, double beta, double * seed );
00079 
00080   virtual void atPutDiagonal( int idiag, OoqpVector& v );
00081   virtual void fromGetDiagonal( int idiag, OoqpVector& v );
00083   virtual void getRow ( int rowIndex, OoqpVector& v_in);
00084 
00085   double * operator[]( int index ) { return mStorage->M[index]; }
00086 
00087   const double * operator[]( int index ) const
00088   { return mStorage->M[index]; }
00089 
00091   double * elements() { return mStorage->M[0]; };
00093   double **Mat() { return mStorage->M; };
00094 
00095   DenseStorage& storage() { return *mStorage; }
00096   DenseStorage *getStorage() { return mStorage.ptr(); }
00097 };
00098 
00099 #endif

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