PIPS-NLP
Public Member Functions | Public Attributes | Static Public Attributes | Protected Attributes | List of all members
SparseStorage Class Reference

#include <SparseStorage.h>

Inheritance diagram for SparseStorage:
DoubleStorage IotrRefCount

Public Member Functions

 SparseStorage (int m_, int n_, int len_)
 
 SparseStorage (int m_, int n_, int len_, int *krowM_, int *jcolM_, double *M_, int deleteElts=0, double *additiveDiag_=NULL)
 
void shiftRows (int row, int shift, int &info)
 
virtual void getSize (int &m, int &n)
 
int rows ()
 
int cols ()
 
int length ()
 
int numberOfNonZeros ()
 
virtual void fromGetDense (int row, int col, double *A, int lda, int rowExtent, int colExtent)
 
virtual void fromAddDense (int row, int col, double *A, int lda, int rowExtent, int colExtent)
 
virtual void atPutDense (int row, int col, double *A, int lda, int rowExtent, int colExtent)
 
virtual void putSparseTriple (int irow[], int len, int jcol[], double A[], int &info)
 
virtual void getDiagonal (OoqpVector &vec)
 
virtual void setToDiagonal (OoqpVector &vec)
 
virtual void ColumnScale (OoqpVector &vec)
 
virtual void RowScale (OoqpVector &vec)
 
virtual void SymmetricScale (OoqpVector &vec)
 
virtual void scalarMult (double num)
 
virtual void atPutSpRow (int col, double A[], int lenA, int irowA[], int &info)
 
virtual void fromGetSpRow (int row, int col, double A[], int lenA, int irowA[], int &nnz, int rowExtent, int &info)
 
virtual void randomize (double alpha, double beta, double *seed)
 
virtual void getTransposePat (int row, int col, int rowExtent, int colExtent, int kpat[], int krowM[], int jcolM[])
 
virtual void getFromPat (double data[], int n, int kpat[])
 
virtual void mult (double beta, double y[], int incy, double alpha, double x[], int incx)
 
virtual void transMult (double beta, double y[], int incy, double alpha, double x[], int incx)
 
virtual void atPutDiagonal (int idiag, OoqpVector &v)
 
virtual void fromGetDiagonal (int idiag, OoqpVector &v)
 
virtual void atPutDiagonal (int idiag, double x[], int incx, int extent)
 
virtual void writeToStream (std::ostream &out) const
 
virtual void symmetrize (int &info)
 
virtual int * symmetrize_set (int &info)
 
virtual void symmetrize_valonly (double *val_lower, int *goffIDX)
 
virtual double abmaxnorm ()
 
void matTransDSymbMultMat (double *d, int *krowMt, int *jcolMt, double *dMt, int **krowMtM, int **jcolMtM, double **dMtM)
 
void matTransDMultMat (double *d, int *krowMt, int *jcolMt, double *dMt, int *krowMtM, int *jcolMtM, double *dMtM)
 
void matTransDinvMultMat (double *d, int *krowMt, int *jcolMt, double *dMt, int *krowMtM, int *jcolMtM, double *dMtM)
 
void transpose (int *krowMt, int *jcolMt, double *dMt)
 
void transpose_withOriIDX (int *krowMt, int *jcolMt, double *Mt, int *OriIDX)
 
void transpose_withNewIDX (int *krowMt, int *jcolMt, double *Mt, int *NewIDX)
 
void reduceToLower ()
 
void transMultLower (double beta, double y[], double alpha, double x[], int firstrow)
 
void transMultMat (double beta, double *Y, int ny, int ldy, double alpha, double *X, int ldx)
 
void transMultMatLower (double *Y, int ny, int firstrow, double alpha, double *X, int ldx)
 
void transMultMatLower (double beta, double *Y, int ny, int ldy, double alpha, double *X, int ldx, int colStart)
 
void fromGetColBlock (int col, double *A, int lda, int colExtent, bool &allzero)
 
void fromGetColBlock (int col, double *A, int lda, int colExtent, int *colSparsity, bool &allzero)
 
void dump (const std::string &_filename)
 
virtual void copyMtxFromDouble (int copyLength, double *values)
 
virtual ~SparseStorage ()
 
virtual void setAdditiveDiagonal (OoqpVector &v)
 
virtual void copyDiagonalVal_From (int idiag, OoqpVector &vvec, bool firstCall, std::map< int, int > &ValIdxMap)
 
virtual void copyDiagonalVal_From (int idiag, double x[], int incx, int diagLength, bool firstCall, std::map< int, int > &ValIdxMap)
 
virtual void atPutSpRow_CorrectMap (int row, double A[], int lenA, int jcolA[], int &info, std::map< int, int > &ValIdxMap, int const IDXconstant)
 
virtual void fromGetSpRow_WithRowStart (int row, int col, double A[], int lenA, int irowA[], int &nnz, int rowExtent, int &info, int &rowStart)
 
virtual void fromGetDense_withMap (int row, int col, double *A, int lda, int rowExtent, int colExtent, int const FirstCall, std::map< int, int > &ValIdxMap)
 
virtual void shiftRows_CorrectMap (int row, int shift, int &info, std::map< int, int > &ValIdxMap)
 
- Public Member Functions inherited from DoubleStorage
 DoubleStorage ()
 
virtual ~DoubleStorage ()
 
- Public Member Functions inherited from IotrRefCount
int refs ()
 
 IotrRefCount ()
 

Public Attributes

int m
 
int n
 
int len
 
int * jcolM
 
int * krowM
 
double * M
 
double * additiveDiag
 

Static Public Attributes

static int instances = 0
 
- Static Public Attributes inherited from IotrRefCount
static int instances = 0
 

Protected Attributes

int neverDeleteElts
 

Additional Inherited Members

- Static Public Member Functions inherited from IotrRefCount
static void release (IotrRefCount **obj)
 
static void addRef (IotrRefCount *const *obj)
 
- Protected Member Functions inherited from IotrRefCount
virtual ~IotrRefCount ()
 

Detailed Description

A class for managing the matrix elements used by sparse matrices.

Constructor & Destructor Documentation

SparseStorage::SparseStorage ( int  m_,
int  n_,
int  len_ 
)
SparseStorage::SparseStorage ( int  m_,
int  n_,
int  len_,
int *  krowM_,
int *  jcolM_,
double *  M_,
int  deleteElts = 0,
double *  additiveDiag_ = NULL 
)
SparseStorage::~SparseStorage ( )
virtual

Member Function Documentation

double SparseStorage::abmaxnorm ( )
virtual
void SparseStorage::atPutDense ( int  row,
int  col,
double *  A,
int  lda,
int  rowExtent,
int  colExtent 
)
virtual

Implements DoubleStorage.

void SparseStorage::atPutDiagonal ( int  idiag,
OoqpVector v 
)
virtual

Implements DoubleStorage.

void SparseStorage::atPutDiagonal ( int  idiag,
double  x[],
int  incx,
int  extent 
)
virtual
void SparseStorage::atPutSpRow ( int  col,
double  A[],
int  lenA,
int  irowA[],
int &  info 
)
virtual

Implements DoubleStorage.

void SparseStorage::atPutSpRow_CorrectMap ( int  row,
double  A[],
int  lenA,
int  jcolA[],
int &  info,
std::map< int, int > &  ValIdxMap,
int const  IDXconstant 
)
virtual
int SparseStorage::cols ( )
inline
void SparseStorage::ColumnScale ( OoqpVector vec)
virtual

Implements DoubleStorage.

void SparseStorage::copyDiagonalVal_From ( int  idiag,
OoqpVector vvec,
bool  firstCall,
std::map< int, int > &  ValIdxMap 
)
virtual

Reimplemented from DoubleStorage.

void SparseStorage::copyDiagonalVal_From ( int  idiag,
double  x[],
int  incx,
int  diagLength,
bool  firstCall,
std::map< int, int > &  ValIdxMap 
)
virtual
void SparseStorage::copyMtxFromDouble ( int  copyLength,
double *  values 
)
virtual
void SparseStorage::dump ( const std::string &  _filename)
void SparseStorage::fromAddDense ( int  row,
int  col,
double *  A,
int  lda,
int  rowExtent,
int  colExtent 
)
virtual
void SparseStorage::fromGetColBlock ( int  col,
double *  A,
int  lda,
int  colExtent,
bool &  allzero 
)
void SparseStorage::fromGetColBlock ( int  col,
double *  A,
int  lda,
int  colExtent,
int *  colSparsity,
bool &  allzero 
)
void SparseStorage::fromGetDense ( int  row,
int  col,
double *  A,
int  lda,
int  rowExtent,
int  colExtent 
)
virtual

for( jcurrent++; jcurrent < n; jcurrent++ ) {

Implements DoubleStorage.

void SparseStorage::fromGetDense_withMap ( int  row,
int  col,
double *  A,
int  lda,
int  rowExtent,
int  colExtent,
int const  FirstCall,
std::map< int, int > &  ValIdxMap 
)
virtual

for( jcurrent++; jcurrent < n; jcurrent++ ) {

void SparseStorage::fromGetDiagonal ( int  idiag,
OoqpVector v 
)
virtual

Implements DoubleStorage.

void SparseStorage::fromGetSpRow ( int  row,
int  col,
double  A[],
int  lenA,
int  irowA[],
int &  nnz,
int  rowExtent,
int &  info 
)
virtual

Implements DoubleStorage.

void SparseStorage::fromGetSpRow_WithRowStart ( int  row,
int  col,
double  A[],
int  lenA,
int  irowA[],
int &  nnz,
int  rowExtent,
int &  info,
int &  rowStart 
)
virtual
void SparseStorage::getDiagonal ( OoqpVector vec)
virtual

Implements DoubleStorage.

void SparseStorage::getFromPat ( double  data[],
int  n,
int  kpat[] 
)
virtual
void SparseStorage::getSize ( int &  m,
int &  n 
)
virtual

Implements DoubleStorage.

void SparseStorage::getTransposePat ( int  row,
int  col,
int  rowExtent,
int  colExtent,
int  kpat[],
int  krowM[],
int  jcolM[] 
)
virtual
int SparseStorage::length ( )
inline
void SparseStorage::matTransDinvMultMat ( double *  d,
int *  krowMt,
int *  jcolMt,
double *  dMt,
int *  krowMtM,
int *  jcolMtM,
double *  dMtM 
)
void SparseStorage::matTransDMultMat ( double *  d,
int *  krowMt,
int *  jcolMt,
double *  dMt,
int *  krowMtM,
int *  jcolMtM,
double *  dMtM 
)

Numerical multiplication MtM = M^T * D * M where D=diag(d) is a diagonal matrix and M=this. M^T and MtM buffers should be allocated before calling this method by calling method matTransDSymbMultMat.

void SparseStorage::matTransDSymbMultMat ( double *  d,
int *  krowMt,
int *  jcolMt,
double *  dMt,
int **  krowMtM,
int **  jcolMtM,
double **  dMtM 
)

Computes the sparsity pattern of MtM = M^T * D * M where D=diag(d) is a diagonal matrix and M=this.

Find the nonzero pattern of the product matrix, allocate it and returns it.

Also allocates, builds and returns this^T since it is needed later for numerical multiplication.

void SparseStorage::mult ( double  beta,
double  y[],
int  incy,
double  alpha,
double  x[],
int  incx 
)
virtual
int SparseStorage::numberOfNonZeros ( )
inline
void SparseStorage::putSparseTriple ( int  irow[],
int  len,
int  jcol[],
double  A[],
int &  info 
)
virtual
void SparseStorage::randomize ( double  alpha,
double  beta,
double *  seed 
)
virtual
void SparseStorage::reduceToLower ( )
int SparseStorage::rows ( )
inline
void SparseStorage::RowScale ( OoqpVector vec)
virtual

Implements DoubleStorage.

void SparseStorage::scalarMult ( double  num)
virtual

Implements DoubleStorage.

void SparseStorage::setAdditiveDiagonal ( OoqpVector v)
virtual
void SparseStorage::setToDiagonal ( OoqpVector vec)
virtual

Implements DoubleStorage.

void SparseStorage::shiftRows ( int  row,
int  shift,
int &  info 
)
void SparseStorage::shiftRows_CorrectMap ( int  row,
int  shift,
int &  info,
std::map< int, int > &  ValIdxMap 
)
virtual
void SparseStorage::SymmetricScale ( OoqpVector vec)
virtual

Implements DoubleStorage.

void SparseStorage::symmetrize ( int &  info)
virtual
int * SparseStorage::symmetrize_set ( int &  info)
virtual
void SparseStorage::symmetrize_valonly ( double *  val_lower,
int *  goffIDX 
)
virtual
void SparseStorage::transMult ( double  beta,
double  y[],
int  incy,
double  alpha,
double  x[],
int  incx 
)
virtual
void SparseStorage::transMultLower ( double  beta,
double  y[],
double  alpha,
double  x[],
int  firstrow 
)
void SparseStorage::transMultMat ( double  beta,
double *  Y,
int  ny,
int  ldy,
double  alpha,
double *  X,
int  ldx 
)
void SparseStorage::transMultMatLower ( double *  Y,
int  ny,
int  firstrow,
double  alpha,
double *  X,
int  ldx 
)
void SparseStorage::transMultMatLower ( double  beta,
double *  Y,
int  ny,
int  ldy,
double  alpha,
double *  X,
int  ldx,
int  colStart 
)

Y <- alpha* M^T X + beta*Y, where M is this Special update function, computes only the elements in Y that are lower triangular elements in a larger matrix that contains Y (see impl file for more details)

void SparseStorage::transpose ( int *  krowMt,
int *  jcolMt,
double *  dMt 
)

Builds the transpose: Mt = this^T

void SparseStorage::transpose_withNewIDX ( int *  krowMt,
int *  jcolMt,
double *  Mt,
int *  NewIDX 
)

Builds the transpose: Mt = this^T, with index of new matrix : ie goff from 13 to 7, NewIDX[13]=7

void SparseStorage::transpose_withOriIDX ( int *  krowMt,
int *  jcolMt,
double *  Mt,
int *  OriIDX 
)

Builds the transpose: Mt = this^T, with index of original matrix: ie goff from 13 to 7, OriIDX[7]=13

void SparseStorage::writeToStream ( std::ostream &  out) const
virtual

Member Data Documentation

double* SparseStorage::additiveDiag
int SparseStorage::instances = 0
static
int* SparseStorage::jcolM
int* SparseStorage::krowM
int SparseStorage::len
int SparseStorage::m
double* SparseStorage::M
int SparseStorage::n
int SparseStorage::neverDeleteElts
protected

The documentation for this class was generated from the following files: