@ -30,7 +30,7 @@ namespace storm {
/ / Forward declare matrix class .
template < typename T > class SparseMatrix ;
template < typename T >
template < typename Index Type , typename ValueType >
class MatrixEntry {
public :
/*!
@ -39,14 +39,14 @@ namespace storm {
* @ param column The column of the matrix entry .
* @ param value The value of the matrix entry .
*/
MatrixEntry ( uint_fast64_t column , T value ) ;
MatrixEntry ( IndexType column , Value Type value ) ;
/*!
* Move - constructs the matrix entry fro the given column - value pair .
*
* @ param pair The column - value pair from which to move - construct the matrix entry .
*/
MatrixEntry ( std : : pair < uint_fast64_t , T > & & pair ) ;
MatrixEntry ( std : : pair < IndexType , ValueType > & & pair ) ;
MatrixEntry ( ) = default ;
MatrixEntry ( MatrixEntry const & other ) = default ;
@ -61,46 +61,46 @@ namespace storm {
*
* @ return The column of the matrix entry .
*/
uint_fast64_t const & getColumn ( ) const ;
IndexType const & getColumn ( ) const ;
/*!
* Retrieve s the column of the matrix entry .
* Set s the column of the current entry .
*
* @ return The column of the matrix entry .
* @ param column The column to set for this entry .
*/
uint_fast64_t & getColumn ( ) ;
void setColumn ( IndexType const & column ) ;
/*!
* Retrieves the value of the matrix entry .
*
* @ return The value of the matrix entry .
*/
T const & getValue ( ) const ;
Value Type const & getValue ( ) const ;
/*!
* Retrieve s the value of the matrix entry .
* Set s the value of the entry in the matrix .
*
* @ return The value of the matrix entry .
* @ param value The value that is to be set for this entry .
*/
T & getValue ( ) ;
void setValue ( ValueType const & value ) ;
/*!
* Retrieves a pair of column and value that characterizes this entry .
*
* @ return A column - value pair that characterizes this entry .
*/
std : : pair < uint_fast64_t , T > const & getColumnValuePair ( ) const ;
std : : pair < IndexType , ValueType > const & getColumnValuePair ( ) const ;
private :
/ / The actual matrix entry .
std : : pair < uint_fast64_t , T > entry ;
std : : pair < IndexType , ValueType > entry ;
} ;
/*!
* Computes the hash value of a matrix entry .
*/
template < typename T >
std : : size_t hash_value ( MatrixEntry < T > const & matrixEntry ) {
template < typename Index Type , typename ValueType >
std : : size_t hash_value ( MatrixEntry < Index Type , ValueType > const & matrixEntry ) {
std : : size_t seed = 0 ;
boost : : hash_combine ( seed , matrixEntry . getColumn ( ) ) ;
boost : : hash_combine ( seed , matrixEntry . getValue ( ) ) ;
@ -110,9 +110,11 @@ namespace storm {
/*!
* A class that can be used to build a sparse matrix by adding value by value .
*/
template < typename T >
template < typename Value Type >
class SparseMatrixBuilder {
public :
typedef uint_fast64_t IndexType ;
/*!
* Constructs a sparse matrix builder producing a matrix with the given number of rows , columns and entries .
*
@ -124,7 +126,7 @@ namespace storm {
* @ param rowGroups The number of row groups of the resulting matrix . This is only relevant if the matrix
* has a custom row grouping .
*/
SparseMatrixBuilder ( uint_fast64_t rows = 0 , uint_fast64_t columns = 0 , uint_fast64_t entries = 0 , bool hasCustomRowGrouping = false , uint_fast64_t rowGroups = 0 ) ;
SparseMatrixBuilder ( IndexType rows = 0 , IndexType columns = 0 , IndexType entries = 0 , bool hasCustomRowGrouping = false , IndexType rowGroups = 0 ) ;
/*!
* Sets the matrix entry at the given row and column to the given value . After all entries have been added ,
@ -139,7 +141,7 @@ namespace storm {
* @ param column The column in which the matrix entry is to be set .
* @ param value The value that is to be set at the specified row and column .
*/
void addNextValue ( uint_fast64_t row , uint_fast64_t column , T const & value ) ;
void addNextValue ( IndexType row , IndexType column , Value Type const & value ) ;
/*!
* Starts a new row group in the matrix . Note that this needs to be called before any entries in the new row
@ -147,7 +149,7 @@ namespace storm {
*
* @ param startingRow The starting row of the new row group .
*/
void newRowGroup ( uint_fast64_t startingRow ) ;
void newRowGroup ( IndexType startingRow ) ;
/*
* Finalizes the sparse matrix to indicate that initialization process has been completed and the matrix
@ -168,7 +170,7 @@ namespace storm {
* effect if the matrix has been created without the number of row groups given . By construction , the row
* groups added this way will be empty .
*/
SparseMatrix < T > build ( uint_fast64_t overriddenRowCount = 0 , uint_fast64_t overriddenColumnCount = 0 , uint_fast64_t overriddenRowGroupCount = 0 ) ;
SparseMatrix < Value Type > build ( IndexType overriddenRowCount = 0 , IndexType overriddenColumnCount = 0 , IndexType overriddenRowGroupCount = 0 ) ;
private :
/*!
@ -182,16 +184,16 @@ namespace storm {
bool rowCountSet ;
/ / The number of rows of the matrix .
uint_fast64_t rowCount ;
IndexType rowCount ;
/ / A flag indicating whether the number of columns was set upon construction .
bool columnCountSet ;
/ / The number of columns of the matrix .
uint_fast64_t columnCount ;
IndexType columnCount ;
/ / The number of entries in the matrix .
uint_fast64_t entryCount ;
IndexType entryCount ;
/ / A flag indicating whether the builder is to construct a custom row grouping for the matrix .
bool hasCustomRowGrouping ;
@ -200,37 +202,37 @@ namespace storm {
bool rowGroupCountSet ;
/ / The number of row groups in the matrix .
uint_fast64_t rowGroupCount ;
IndexType rowGroupCount ;
std : : vector < uint_fast64_t > rowGroupIndices ;
std : : vector < IndexType > rowGroupIndices ;
/ / Stores whether the storage of the matrix was preallocated or not .
bool storagePreallocated ;
/ / The storage for the columns and values of all entries in the matrix .
std : : vector < MatrixEntry < T > > columnsAndValues ;
std : : vector < MatrixEntry < Index Type , ValueType > > columnsAndValues ;
/ / A vector containing the indices at which each given row begins . This index is to be interpreted as an
/ / index in the valueStorage and the columnIndications vectors . Put differently , the values of the entries
/ / in row i are valueStorage [ rowIndications [ i ] ] to valueStorage [ rowIndications [ i + 1 ] ] where the last
/ / entry is not included anymore .
std : : vector < uint_fast64_t > rowIndications ;
std : : vector < IndexType > rowIndications ;
/ / Stores the current number of entries in the matrix . This is used for inserting an entry into a matrix
/ / with preallocated storage .
uint_fast64_t currentEntryCount ;
IndexType currentEntryCount ;
/ / Stores the row of the last entry in the matrix . This is used for correctly inserting an entry into a
/ / matrix .
uint_fast64_t lastRow ;
IndexType lastRow ;
/ / Stores the column of the currently last entry in the matrix . This is used for correctly inserting an
/ / entry into a matrix .
uint_fast64_t lastColumn ;
IndexType lastColumn ;
/ / Stores the currently active row group . This is used for correctly constructing the row grouping of the
/ / matrix .
uint_fast64_t currentRowGroup ;
IndexType currentRowGroup ;
} ;
/*!
@ -247,7 +249,7 @@ namespace storm {
* It should be observed that due to the nature of the sparse matrix format , entries can only be inserted in
* order , i . e . row by row and column by column .
*/
template < typename T >
template < typename Value Type >
class SparseMatrix {
public :
/ / Declare adapter classes as friends to use internal data .
@ -255,8 +257,9 @@ namespace storm {
friend class storm : : adapters : : EigenAdapter ;
friend class storm : : adapters : : StormAdapter ;
typedef typename std : : vector < MatrixEntry < T > > : : iterator iterator ;
typedef typename std : : vector < MatrixEntry < T > > : : const_iterator const_iterator ;
typedef uint_fast64_t IndexType ;
typedef typename std : : vector < MatrixEntry < IndexType , ValueType > > : : iterator iterator ;
typedef typename std : : vector < MatrixEntry < IndexType , ValueType > > : : const_iterator const_iterator ;
/*!
* This class represents a number of consecutive rows of the matrix .
@ -270,7 +273,7 @@ namespace storm {
* @ param begin An iterator that points to the beginning of the row .
* @ param entryCount The number of entrys in the rows .
*/
rows ( iterator begin , uint_fast64_t entryCount ) ;
rows ( iterator begin , IndexType entryCount ) ;
/*!
* Retrieves an iterator that points to the beginning of the rows .
@ -286,12 +289,19 @@ namespace storm {
*/
iterator end ( ) ;
/*!
* Retrieves the number of entries in the rows .
*
* @ return The number of entries in the rows .
*/
IndexType getNumberOfEntries ( ) const ;
private :
/ / The pointer to the columnd and value of the first entry .
iterator beginIterator ;
/ / The number of non - zero entries in the rows .
uint_fast64_t entryCount ;
IndexType entryCount ;
} ;
/*!
@ -306,7 +316,7 @@ namespace storm {
* @ param begin An iterator that points to the beginning of the row .
* @ param entryCount The number of entrys in the rows .
*/
const_rows ( const_iterator begin , uint_fast64_t entryCount ) ;
const_rows ( const_iterator begin , IndexType entryCount ) ;
/*!
* Retrieves an iterator that points to the beginning of the rows .
@ -322,12 +332,19 @@ namespace storm {
*/
const_iterator end ( ) const ;
/*!
* Retrieves the number of entries in the rows .
*
* @ return The number of entries in the rows .
*/
IndexType getNumberOfEntries ( ) const ;
private :
/ / The pointer to the columnd and value of the first entry .
const_iterator beginIterator ;
/ / The number of non - zero entries in the rows .
uint_fast64_t entryCount ;
IndexType entryCount ;
} ;
/*!
@ -347,14 +364,14 @@ namespace storm {
*
* @ param other The matrix from which to copy the content .
*/
SparseMatrix ( SparseMatrix < T > const & other ) ;
SparseMatrix ( SparseMatrix < Value Type > const & other ) ;
/*!
* Constructs a sparse matrix by moving the contents of the given matrix to the newly created one .
*
* @ param other The matrix from which to move the content .
*/
SparseMatrix ( SparseMatrix < T > & & other ) ;
SparseMatrix ( SparseMatrix < Value Type > & & other ) ;
/*!
* Constructs a sparse matrix by copying the given contents .
@ -364,7 +381,7 @@ namespace storm {
* @ param columnsAndValues The vector containing the columns and values of the entries in the matrix .
* @ param rowGroupIndices The vector representing the row groups in the matrix .
*/
SparseMatrix ( uint_fast64_t columnCount , std : : vector < uint_fast64_t > const & rowIndications , std : : vector < MatrixEntry < T > > const & columnsAndValues , std : : vector < uint_fast64_t > const & rowGroupIndices ) ;
SparseMatrix ( IndexType columnCount , std : : vector < IndexType > const & rowIndications , std : : vector < MatrixEntry < Index Type , ValueType > > const & columnsAndValues , std : : vector < IndexType > const & rowGroupIndices ) ;
/*!
* Constructs a sparse matrix by moving the given contents .
@ -374,21 +391,21 @@ namespace storm {
* @ param columnsAndValues The vector containing the columns and values of the entries in the matrix .
* @ param rowGroupIndices The vector representing the row groups in the matrix .
*/
SparseMatrix ( uint_fast64_t columnCount , std : : vector < uint_fast64_t > & & rowIndications , std : : vector < MatrixEntry < T > > & & columnsAndValues , std : : vector < uint_fast64_t > & & rowGroupIndices ) ;
SparseMatrix ( IndexType columnCount , std : : vector < IndexType > & & rowIndications , std : : vector < MatrixEntry < Index Type , ValueType > > & & columnsAndValues , std : : vector < IndexType > & & rowGroupIndices ) ;
/*!
* Assigns the contents of the given matrix to the current one by deep - copying its contents .
*
* @ param other The matrix from which to copy - assign .
*/
SparseMatrix < T > & operator = ( SparseMatrix < T > const & other ) ;
SparseMatrix < Value Type > & operator = ( SparseMatrix < Value Type > const & other ) ;
/*!
* Assigns the contents of the given matrix to the current one by moving its contents .
*
* @ param other The matrix from which to move to contents .
*/
SparseMatrix < T > & operator = ( SparseMatrix < T > & & other ) ;
SparseMatrix < Value Type > & operator = ( SparseMatrix < Value Type > & & other ) ;
/*!
* Determines whether the current and the given matrix are semantically equal .
@ -396,42 +413,42 @@ namespace storm {
* @ param other The matrix with which to compare the current matrix .
* @ return True iff the given matrix is semantically equal to the current one .
*/
bool operator = = ( SparseMatrix < T > const & other ) const ;
bool operator = = ( SparseMatrix < Value Type > const & other ) const ;
/*!
* Returns the number of rows of the matrix .
*
* @ return The number of rows of the matrix .
*/
uint_fast64_t getRowCount ( ) const ;
IndexType getRowCount ( ) const ;
/*!
* Returns the number of columns of the matrix .
*
* @ return The number of columns of the matrix .
*/
uint_fast64_t getColumnCount ( ) const ;
IndexType getColumnCount ( ) const ;
/*!
* Returns the number of entries in the matrix .
*
* @ return The number of entries in the matrix .
*/
uint_fast64_t getEntryCount ( ) const ;
IndexType getEntryCount ( ) const ;
/*!
* Returns the number of nonzero entries in the matrix .
*
* @ return The number of nonzero entries in the matrix .
*/
uint_fast64_t getNonzeroEntryCount ( ) const ;
IndexType getNonzeroEntryCount ( ) const ;
/*!
* Returns the number of row groups in the matrix .
*
* @ return The number of row groups in the matrix .
*/
uint_fast64_t getRowGroupCount ( ) const ;
IndexType getRowGroupCount ( ) const ;
/*!
* Returns the size of the given row group .
@ -439,14 +456,14 @@ namespace storm {
* @ param group The group whose size to retrieve .
* @ return The number of rows that belong to the given row group .
*/
uint_fast64_t getRowGroupSize ( uint_fast64_t group ) const ;
IndexType getRowGroupSize ( IndexType group ) const ;
/*!
* Returns the grouping of rows of this matrix .
*
* @ return The grouping of rows of this matrix .
*/
std : : vector < uint_fast64_t > const & getRowGroupIndices ( ) const ;
std : : vector < IndexType > const & getRowGroupIndices ( ) const ;
/*!
* This function makes the given rows absorbing .
@ -469,7 +486,7 @@ namespace storm {
* @ param row The row to be made Dirac .
* @ param column The index of the column whose value is to be set to 1.
*/
void makeRowDirac ( const uint_fast64_t row , const uint_fast64_t column ) ;
void makeRowDirac ( const IndexType row , const IndexType column ) ;
/*
* Sums the entries in the given row and columns .
@ -478,7 +495,7 @@ namespace storm {
* @ param columns A bit vector that indicates which columns to add .
* @ return The sum of the entries in the given row and columns .
*/
T getConstrainedRowSum ( uint_fast64_t row , storm : : storage : : BitVector const & columns ) const ;
Value Type getConstrainedRowSum ( IndexType row , storm : : storage : : BitVector const & columns ) const ;
/*!
* Computes a vector whose i - th entry is the sum of the entries in the i - th selected row where only those
@ -489,7 +506,7 @@ namespace storm {
*
* @ return A vector whose elements are the sums of the selected columns in each row .
*/
std : : vector < T > getConstrainedRowSumVector ( storm : : storage : : BitVector const & rowConstraint , storm : : storage : : BitVector const & columnConstraint ) const ;
std : : vector < Value Type > getConstrainedRowSumVector ( storm : : storage : : BitVector const & rowConstraint , storm : : storage : : BitVector const & columnConstraint ) const ;
/*!
* Computes a vector whose entries represent the sums of selected columns for all rows in selected row
@ -500,7 +517,7 @@ namespace storm {
* @ return A vector whose entries represent the sums of selected columns for all rows in selected row
* groups .
*/
std : : vector < T > getConstrainedRowGroupSumVector ( storm : : storage : : BitVector const & rowGroupConstraint , storm : : storage : : BitVector const & columnConstraint ) const ;
std : : vector < Value Type > getConstrainedRowGroupSumVector ( storm : : storage : : BitVector const & rowGroupConstraint , storm : : storage : : BitVector const & columnConstraint ) const ;
/*!
* Creates a submatrix of the current matrix by dropping all rows and columns whose bits are not
@ -524,7 +541,7 @@ namespace storm {
* each row in row group i . This can then be used for inserting other values later .
* @ return A submatrix of the current matrix by selecting one row out of each row group .
*/
SparseMatrix selectRowsFromRowGroups ( std : : vector < uint_fast64_t > const & rowGroupToRowIndexMapping , bool insertDiagonalEntries = true ) const ;
SparseMatrix selectRowsFromRowGroups ( std : : vector < IndexType > const & rowGroupToRowIndexMapping , bool insertDiagonalEntries = true ) const ;
/*!
* Transposes the matrix .
@ -533,7 +550,7 @@ namespace storm {
*
* @ return A sparse matrix that represents the transpose of this matrix .
*/
storm : : storage : : SparseMatrix < T > transpose ( bool joinGroups = false ) const ;
storm : : storage : : SparseMatrix < Value Type > transpose ( bool joinGroups = false ) const ;
/*!
* Transforms the matrix into an equation system . That is , it transforms the matrix A into a matrix ( 1 - A ) .
@ -561,7 +578,7 @@ namespace storm {
*
* @ return A pair ( L + U , D ^ - 1 ) containing the matrix L + U and the inverted diagonal matrix D ^ - 1.
*/
std : : pair < storm : : storage : : SparseMatrix < T > , storm : : storage : : SparseMatrix < T > > getJacobiDecomposition ( ) const ;
std : : pair < storm : : storage : : SparseMatrix < Value Type > , storm : : storage : : SparseMatrix < Value Type > > getJacobiDecomposition ( ) const ;
/*!
* Performs a pointwise matrix multiplication of the matrix with the given matrix and returns a vector
@ -573,7 +590,7 @@ namespace storm {
* @ return A vector containing the sum of the entries in each row of the matrix resulting from pointwise
* multiplication of the current matrix with the given matrix .
*/
std : : vector < T > getPointwiseProductRowSumVector ( storm : : storage : : SparseMatrix < T > const & otherMatrix ) const ;
std : : vector < Value Type > getPointwiseProductRowSumVector ( storm : : storage : : SparseMatrix < Value Type > const & otherMatrix ) const ;
/*!
* Multiplies the matrix with the given vector and writes the result to the given result vector . If a
@ -584,7 +601,7 @@ namespace storm {
* @ param result The vector that is supposed to hold the result of the multiplication after the operation .
* @ return The product of the matrix and the given vector as the content of the given result vector .
*/
void multiplyWithVector ( std : : vector < T > const & vector , std : : vector < T > & result ) const ;
void multiplyWithVector ( std : : vector < Value Type > const & vector , std : : vector < Value Type > & result ) const ;
/*!
* Multiplies the matrix with the given vector in a sequential way and writes the result to the given result
@ -594,7 +611,7 @@ namespace storm {
* @ param result The vector that is supposed to hold the result of the multiplication after the operation .
* @ return The product of the matrix and the given vector as the content of the given result vector .
*/
void multiplyWithVectorSequential ( std : : vector < T > const & vector , std : : vector < T > & result ) const ;
void multiplyWithVectorSequential ( std : : vector < Value Type > const & vector , std : : vector < Value Type > & result ) const ;
# ifdef STORM_HAVE_INTELTBB
/*!
@ -605,7 +622,7 @@ namespace storm {
* @ param result The vector that is supposed to hold the result of the multiplication after the operation .
* @ return The product of the matrix and the given vector as the content of the given result vector .
*/
void multiplyWithVectorParallel ( std : : vector < T > const & vector , std : : vector < T > & result ) const ;
void multiplyWithVectorParallel ( std : : vector < Value Type > const & vector , std : : vector < Value Type > & result ) const ;
# endif
/*!
@ -614,7 +631,7 @@ namespace storm {
* @ param row The row that is to be summed .
* @ return The sum of the selected row .
*/
T getRowSum ( uint_fast64_t row ) const ;
Value Type getRowSum ( IndexType row ) const ;
/*!
* Checks if the current matrix is a submatrix of the given matrix , where a matrix A is called a submatrix
@ -623,7 +640,7 @@ namespace storm {
* @ param matrix The matrix that possibly is a supermatrix of the current matrix .
* @ return True iff the current matrix is a submatrix of the given matrix .
*/
bool isSubmatrixOf ( SparseMatrix < T > const & matrix ) const ;
bool isSubmatrixOf ( SparseMatrix < Value Type > const & matrix ) const ;
template < typename TPrime >
friend std : : ostream & operator < < ( std : : ostream & out , SparseMatrix < TPrime > const & matrix ) ;
@ -649,7 +666,7 @@ namespace storm {
* @ param endRow The ending row ( which is included in the result ) .
* @ return An object representing the consecutive rows given by the parameters .
*/
const_rows getRows ( uint_fast64_t startRow , uint_fast64_t endRow ) const ;
const_rows getRows ( IndexType startRow , IndexType endRow ) const ;
/*!
* Returns an object representing the consecutive rows given by the parameters .
@ -658,7 +675,7 @@ namespace storm {
* @ param endRow The ending row ( which is included in the result ) .
* @ return An object representing the consecutive rows given by the parameters .
*/
rows getRows ( uint_fast64_t startRow , uint_fast64_t endRow ) ;
rows getRows ( IndexType startRow , IndexType endRow ) ;
/*!
* Returns an object representing the given row .
@ -666,7 +683,7 @@ namespace storm {
* @ param row The row to get .
* @ return An object representing the given row .
*/
const_rows getRow ( uint_fast64_t row ) const ;
const_rows getRow ( IndexType row ) const ;
/*!
* Returns an object representing the given row .
@ -674,7 +691,7 @@ namespace storm {
* @ param row The row to get .
* @ return An object representing the given row .
*/
rows getRow ( uint_fast64_t row ) ;
rows getRow ( IndexType row ) ;
/*!
* Returns an object representing the given row group .
@ -682,7 +699,7 @@ namespace storm {
* @ param rowGroup The row group to get .
* @ return An object representing the given row group .
*/
const_rows getRowGroup ( uint_fast64_t rowGroup ) const ;
const_rows getRowGroup ( IndexType rowGroup ) const ;
/*!
* Returns an object representing the given row group .
@ -690,7 +707,7 @@ namespace storm {
* @ param rowGroup The row group to get .
* @ return An object representing the given row group .
*/
rows getRowGroup ( uint_fast64_t rowGroup ) ;
rows getRowGroup ( IndexType rowGroup ) ;
/*!
* Retrieves an iterator that points to the beginning of the given row .
@ -698,7 +715,7 @@ namespace storm {
* @ param row The row to the beginning of which the iterator has to point .
* @ return An iterator that points to the beginning of the given row .
*/
const_iterator begin ( uint_fast64_t row = 0 ) const ;
const_iterator begin ( IndexType row = 0 ) const ;
/*!
* Retrieves an iterator that points to the beginning of the given row .
@ -706,7 +723,7 @@ namespace storm {
* @ param row The row to the beginning of which the iterator has to point .
* @ return An iterator that points to the beginning of the given row .
*/
iterator begin ( uint_fast64_t row = 0 ) ;
iterator begin ( IndexType row = 0 ) ;
/*!
* Retrieves an iterator that points past the end of the given row .
@ -714,7 +731,7 @@ namespace storm {
* @ param row The row past the end of which the iterator has to point .
* @ return An iterator that points past the end of the given row .
*/
const_iterator end ( uint_fast64_t row ) const ;
const_iterator end ( IndexType row ) const ;
/*!
* Retrieves an iterator that points past the end of the given row .
@ -722,7 +739,7 @@ namespace storm {
* @ param row The row past the end of which the iterator has to point .
* @ return An iterator that points past the end of the given row .
*/
iterator end ( uint_fast64_t row ) ;
iterator end ( IndexType row ) ;
/*!
* Retrieves an iterator that points past the end of the last row of the matrix .
@ -751,31 +768,31 @@ namespace storm {
* @ return A matrix corresponding to a submatrix of the current matrix in which only row groups and columns
* given by the row group constraint are kept and all others are dropped .
*/
SparseMatrix getSubmatrix ( storm : : storage : : BitVector const & rowGroupConstraint , storm : : storage : : BitVector const & columnConstraint , std : : vector < uint_fast64_t > const & rowGroupIndices , bool insertDiagonalEntries = false ) const ;
SparseMatrix getSubmatrix ( storm : : storage : : BitVector const & rowGroupConstraint , storm : : storage : : BitVector const & columnConstraint , std : : vector < IndexType > const & rowGroupIndices , bool insertDiagonalEntries = false ) const ;
/ / The number of rows of the matrix .
uint_fast64_t rowCount ;
IndexType rowCount ;
/ / The number of columns of the matrix .
uint_fast64_t columnCount ;
IndexType columnCount ;
/ / The number of entries in the matrix .
uint_fast64_t entryCount ;
IndexType entryCount ;
/ / The number of nonzero entries in the matrix .
uint_fast64_t nonzeroEntryCount ;
IndexType nonzeroEntryCount ;
/ / The storage for the columns and values of all entries in the matrix .
std : : vector < MatrixEntry < T > > columnsAndValues ;
std : : vector < MatrixEntry < Index Type , ValueType > > columnsAndValues ;
/ / A vector containing the indices at which each given row begins . This index is to be interpreted as an
/ / index in the valueStorage and the columnIndications vectors . Put differently , the values of the entries
/ / in row i are valueStorage [ rowIndications [ i ] ] to valueStorage [ rowIndications [ i + 1 ] ] where the last
/ / entry is not included anymore .
std : : vector < uint_fast64_t > rowIndications ;
std : : vector < IndexType > rowIndications ;
/ / A vector indicating the row groups of the matrix .
std : : vector < uint_fast64_t > rowGroupIndices ;
std : : vector < IndexType > rowGroupIndices ;
} ;
} / / namespace storage