00001
00002
00003
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