#include <Matrix.h>
Public Member Functions  
Matrix ()  
Matrix (int num_rows, int num_cols, bool distributed, bool randomized=false)  
Matrix (double *mat, int num_rows, int num_cols, bool distributed, bool copy_data=true)  
Matrix (const Matrix &other)  
Copy constructor. More...  
~Matrix ()  
Destructor.  
Matrix &  operator= (const Matrix &rhs) 
Assignment operator. More...  
Matrix &  operator= (const double a) 
Assignment operator. More...  
Matrix &  operator+= (const Matrix &rhs) 
Addition operator. More...  
Matrix &  operator= (const Matrix &rhs) 
Subtraction operator. More...  
void  setSize (int num_rows, int num_cols) 
Sets the number of rows and columns of the matrix and reallocates storage if needed. All values are initialized to zero. More...  
bool  distributed () const 
Returns true if the Matrix is distributed. More...  
bool  balanced () const 
Returns true if rows of matrix are loadbalanced.  
int  numRows () const 
Returns the number of rows of the Matrix on this processor. More...  
int  numDistributedRows () const 
Returns the number of rows of the Matrix across all processors. More...  
int  numColumns () const 
Returns the number of columns in the Matrix. This method will return the same value from each processor. More...  
Matrix *  getFirstNColumns (int n) const 
Get the first N columns of a matrix. More...  
void  getFirstNColumns (int n, Matrix *&result) const 
Get the first N columns of a matrix. More...  
void  getFirstNColumns (int n, Matrix &result) const 
Get the first N columns of a matrix. More...  
Matrix *  mult (const Matrix &other) const 
Multiplies this Matrix with other and returns the product, reference version. More...  
Matrix *  mult (const Matrix *other) const 
Multiplies this Matrix with other and returns the product, pointer version. More...  
void  mult (const Matrix &other, Matrix *&result) const 
Multiplies this Matrix with other and fills result with the answer. More...  
void  mult (const Matrix &other, Matrix &result) const 
Multiplies this Matrix with other and fills result with the answer. More...  
Vector *  mult (const Vector &other) const 
Multiplies this Matrix with other and returns the product, reference version. More...  
Vector *  mult (const Vector *other) const 
Multiplies this Matrix with other and returns the product, pointer version. More...  
void  mult (const Vector &other, Vector *&result) const 
Multiplies this Matrix with other and fills result with the answer. More...  
void  mult (const Vector &other, Vector &result) const 
Multiplies this Matrix with other and fills result with the answer. More...  
void  pointwise_mult (int this_row, const Vector &other, Vector &result) const 
Multiplies a specified row of this Matrix with other pointwise. More...  
void  pointwise_mult (int this_row, Vector &other) const 
Multiplies a specified row of this Matrix with other pointwise. This modifies other. More...  
void  multPlus (Vector &a, const Vector &b, double c) const 
Computes a += this*b*c. More...  
Matrix *  transposeMult (const Matrix &other) const 
Multiplies the transpose of this Matrix with other and returns the product, reference version. More...  
Matrix *  transposeMult (const Matrix *other) const 
Multiplies the transpose of this Matrix with other and returns the product, pointer version. More...  
void  transposeMult (const Matrix &other, Matrix *&result) const 
Multiplies the transpose of this Matrix with other and fills result with the answer. More...  
void  transposeMult (const Matrix &other, Matrix &result) const 
Multiplies the transpose of this Matrix with other and fills result with the answer. More...  
Vector *  transposeMult (const Vector &other) const 
Multiplies the transpose of this Matrix with other and returns the product, reference version. More...  
Vector *  transposeMult (const Vector *other) const 
Multiplies the transpose of this Matrix with other and returns the product, pointer version. More...  
void  transposeMult (const Vector &other, Vector *&result) const 
Multiplies the transpose of this Matrix with other and fills result with the answer. More...  
void  transposeMult (const Vector &other, Vector &result) const 
Multiplies the transpose of this Matrix with other and fills result with the answer. More...  
Matrix *  inverse () const 
Computes and returns the inverse of this. More...  
void  inverse (Matrix *&result) const 
Computes and returns the inverse of this. More...  
void  inverse (Matrix &result) const 
Computes and returns the inverse of this. More...  
void  inverse () 
Computes the inverse of this and stores result in this. More...  
Vector *  getColumn (int column) const 
Returns a column of the matrix (not owned by Matrix). More...  
void  getColumn (int column, Vector *&result) const 
Returns a column of the matrix (not owned by Matrix). More...  
void  getColumn (int column, Vector &result) const 
Returns a column of the matrix (not owned by Matrix). More...  
void  transpose () 
Replaces this Matrix with its transpose (in place), in the serial square case only. More...  
void  transposePseudoinverse () 
Computes the transposePseudoinverse of this. More...  
void  qrcp_pivots_transpose (int *row_pivot, int *row_pivot_owner, int pivots_requested) const 
Compute the leading numColumns() column pivots from a QR decomposition with column pivots (QRCP) of the transpose of this. More...  
const double &  item (int row, int col) const 
Const Matrix member access. Matrix data is stored in rowmajor format. More...  
double &  item (int row, int col) 
Nonconst Matrix member access. Matrix data is stored in rowmajor format. More...  
const double &  operator() (int row, int col) const 
Const Matrix member access. More...  
double &  operator() (int row, int col) 
Nonconst Matrix member access. More...  
void  print (const char *prefix) const 
print Matrix into (a) ascii file(s). More...  
void  write (const std::string &base_file_name) const 
write Matrix into (a) HDF file(s). More...  
void  read (const std::string &base_file_name) 
read Matrix into (a) HDF file(s). More...  
void  local_read (const std::string &base_file_name, int rank) 
read a single rank of a distributed Matrix into (a) HDF file(s). More...  
double *  getData () const 
Get the matrix data as a pointer.  
Class Matrix is a simple matrix class in which the rows may be distributed across multiple processes. This class supports only the basic operations that are needed by the SVD library.
CAROM::Matrix::Matrix  (  ) 
Empty Constructor
CAROM::Matrix::Matrix  (  int  num_rows, 
int  num_cols,  
bool  distributed,  
bool  randomized = false 

) 
Constructor creating a Matrix with uninitialized values.
[in]  num_rows  When undistributed, the total number of rows of the Matrix. When distributed, the part of the total number of rows of the Matrix on this processor. 
[in]  num_cols  The total number of columns of the Matrix. 
[in]  distributed  If true the rows of the Matrix are spread over all processors. 
[in]  randomized  If true the matrix will be a standard normally distributed random matrix. 
CAROM::Matrix::Matrix  (  double *  mat, 
int  num_rows,  
int  num_cols,  
bool  distributed,  
bool  copy_data = true 

) 
Constructor creating a Matrix with uninitialized values.
[in]  mat  The initial values of the Matrix. 
[in]  num_rows  When undistributed, the total number of rows of the Matrix. When distributed, the part of the total number of rows of the Matrix on this processor. 
[in]  num_cols  The total number of columns of the Matrix. 
[in]  distributed  If true the rows of the Matrix are spread over all processors. 
[in]  copy_data  If true the matrix allocates is own storage and copies the contents of mat into its own storage. Otherwise it uses mat as its storage. 
CAROM::Matrix::Matrix  (  const Matrix &  other  ) 
Copy constructor.
[in]  other  The Matrix to copy. 

inline 

inline 
void CAROM::Matrix::getColumn  (  int  column, 
Vector *&  result  
)  const 
void CAROM::Matrix::getColumn  (  int  column, 
Vector &  result  
)  const 
Matrix* CAROM::Matrix::getFirstNColumns  (  int  n  )  const 
Get the first N columns of a matrix.
[in]  n  The number of columns to return. 
void CAROM::Matrix::getFirstNColumns  (  int  n, 
Matrix *&  result  
)  const 
Get the first N columns of a matrix.
[in]  n  The number of columns to return. 
[out]  result  The truncated Matrix. 
void CAROM::Matrix::getFirstNColumns  (  int  n, 
Matrix &  result  
)  const 
Get the first N columns of a matrix.
[in]  n  The number of columns to return. 
[out]  result  The truncated Matrix. 

inline 
Computes and returns the inverse of this.
void CAROM::Matrix::inverse  (  Matrix *&  result  )  const 
Computes and returns the inverse of this.
If result has not been allocated it will be, otherwise it will be sized accordingly.
[out]  result  The inverse of this. 
void CAROM::Matrix::inverse  (  Matrix &  result  )  const 
Computes and returns the inverse of this.
Result will be sized accordingly.
[out]  result  The inverse of this. 
void CAROM::Matrix::inverse  (  ) 
Computes the inverse of this and stores result in this.

inline 

inline 
Nonconst Matrix member access. Matrix data is stored in rowmajor format.
Allows constructs of the form mat[i, j] = val;
void CAROM::Matrix::local_read  (  const std::string &  base_file_name, 
int  rank  
) 
read a single rank of a distributed Matrix into (a) HDF file(s).
[in]  base_file_name  The base part of the file name. 
[in]  rank  The rank to read from. 
Multiplies this Matrix with other and returns the product, reference version.
Supports multiplication of two undistributed matrices returning an undistributed Matrix, and multiplication of a distributed Matrix with an undistributed Matrix returning a distributed Matrix.
[in]  other  The Matrix to multiply with this. 
Multiplies this Matrix with other and returns the product, pointer version.
Supports multiplication of two undistributed matrices returning an undistributed Matrix, and multiplication of a distributed Matrix with an undistributed Matrix returning a distributed Matrix.
[in]  other  The Matrix to multiply with this. 
Multiplies this Matrix with other and fills result with the answer.
Supports multiplication of two undistributed matrices resulting in an undistributed Matrix, and multiplication of a distributed Matrix with an undistributed Matrix resulting in a distributed Matrix. If result has not been allocated it will be, otherwise it will be sized accordingly.
Multiplies this Matrix with other and fills result with the answer.
Supports multiplication of two undistributed matrices resulting in an undistributed Matrix, and multiplication of a distributed Matrix with an undistributed Matrix resulting in a distributed Matrix. Result will be sized accordingly.
Multiplies this Matrix with other and returns the product, reference version.
Supports multiplication of an undistributed Matrix and Vector returning an undistributed Vector, and multiplication of a distributed Matrix and an undistributed Vector returning a distributed Vector.
[in]  other  The Vector to multiply with this. 
Multiplies this Matrix with other and returns the product, pointer version.
Supports multiplication of an undistributed Matrix and Vector returning an undistributed Vector, and multiplication of a distributed Matrix and an undistributed Vector returning a distributed Vector.
[in]  other  The Vector to multiply with this. 
Multiplies this Matrix with other and fills result with the answer.
Supports multiplication of an undistributed Matrix and Vector resulting in an undistributed Vector, and multiplication of a distributed Matrix and an undistributed Vector resulting in a distributed Vector. If result has not been allocated it will be, otherwise it will be sized accordingly.
Multiplies this Matrix with other and fills result with the answer.
Supports multiplication of an undistributed Matrix and Vector resulting in an undistributed Vector, and multiplication of a distributed Matrix and an undistributed Vector resulting in a distributed Vector. Result will be sized accordingly.
Computes a += this*b*c.
Supports accumulation of the multiplication of an undistributed Matrix and Vector into an undistributed Vector, and accumulation of the multiplication of a distributed Matrix and an undistributed Vector into a distributed Vector.

inline 

inline 

inline 

inline 
Const Matrix member access.

inline 
Nonconst Matrix member access.
Allows constructs of the form mat[i, j] = val;
Addition operator.
[in]  rhs  The Matrix to add to this. 
Subtraction operator.
[in]  rhs  The Matrix to subtract to this. 
Assignment operator.
[in]  rhs  The Matrix to assign to this. 
Matrix& CAROM::Matrix::operator=  (  const double  a  ) 
Assignment operator.
[in]  a  constant value 
Multiplies a specified row of this Matrix with other pointwise.
Only supports multiplication of an undistributed Matrix and Vector resulting in an undistributed Vector. Result will be sized accordingly.
void CAROM::Matrix::pointwise_mult  (  int  this_row, 
Vector &  other  
)  const 
Multiplies a specified row of this Matrix with other pointwise. This modifies other.
Only supports multiplication of an undistributed Matrix and Vector resulting in an undistributed Vector. Result will be sized accordingly.
void CAROM::Matrix::print  (  const char *  prefix  )  const 
print Matrix into (a) ascii file(s).
[in]  prefix  The name of the prefix of the file name. 
void CAROM::Matrix::qrcp_pivots_transpose  (  int *  row_pivot, 
int *  row_pivot_owner,  
int  pivots_requested  
)  const 
Compute the leading numColumns() column pivots from a QR decomposition with column pivots (QRCP) of the transpose of this.
[out]  row_pivot  Array of leading column pivots from QRCP of transpose of this Matrix, has length pivots_requested 
[out]  row_pivot_owner  Array of process rank that owns each pivot on the communicator owned by this Matrix. 
[in]  pivots_requested  The number of pivots requested, must be less than or equal to the number of rows of this Matrix. 
void CAROM::Matrix::read  (  const std::string &  base_file_name  ) 
read Matrix into (a) HDF file(s).
[in]  base_file_name  The base part of the file name. 

inline 
Sets the number of rows and columns of the matrix and reallocates storage if needed. All values are initialized to zero.
[in]  num_rows  New number of rows 
[in]  num_cols  New number of cols 
void CAROM::Matrix::transpose  (  ) 
Replaces this Matrix with its transpose (in place), in the serial square case only.
Multiplies the transpose of this Matrix with other and returns the product, reference version.
Supports multiplication of two undistributed matrices returning an undistributed Matrix or two distributed matrices returning an undistributed Matrix.
[in]  other  The Matrix to multiply with this. 
Multiplies the transpose of this Matrix with other and returns the product, pointer version.
Supports multiplication of two undistributed matrices returning an undistributed Matrix or two distributed matrices returning an undistributed Matrix.
[in]  other  The Matrix to multiply with this. 
Multiplies the transpose of this Matrix with other and fills result with the answer.
Supports multiplication of two undistributed matrices or two distributed matrices resulting in an undistributed Matrix. If result has not been allocated it will be, otherwise it will be sized accordingly.
Multiplies the transpose of this Matrix with other and fills result with the answer.
Supports multiplication of two undistributed matrices or two distributed matrices resulting in an undistributed Matrix. Result will be sized accordingly.
Multiplies the transpose of this Matrix with other and returns the product, reference version.
Supports multiplication of an undistributed Matrix and an undistributed Vector or a distributed Matrix and a distributed Vector returning an undistributed Vector.
[in]  other  The Vector to multiply with this. 
Multiplies the transpose of this Matrix with other and returns the product, pointer version.
Supports multiplication of an undistributed Matrix and an undistributed Vector or a distributed Matrix and a distributed Vector returning an undistributed Vector.
[in]  other  The Vector to multiply with this. 
Multiplies the transpose of this Matrix with other and fills result with the answer.
Supports multiplication of an undistributed Matrix and an undistributed Vector or a distributed Matrix and a distributed Vector resulting in an undistributed Vector. If result has not been allocated it will be, otherwise it will be sized accordingly.
Multiplies the transpose of this Matrix with other and fills result with the answer.
Supports multiplication of an undistributed Matrix and an undistributed Vector or a distributed Matrix and a distributed Vector resulting in an undistributed Vector. Result will be sized accordingly.
void CAROM::Matrix::transposePseudoinverse  (  ) 
Computes the transposePseudoinverse of this.
Assumes this is full column rank; may fail if this is not full column rank.
void CAROM::Matrix::write  (  const std::string &  base_file_name  )  const 
write Matrix into (a) HDF file(s).
[in]  base_file_name  The base part of the file name. 