Classes
Sparse Submatrix

Classes

class  blaze::SparseSubmatrix< MT, AF, SO >::SubmatrixElement< MatrixType, IteratorType >
 Access proxy for a specific element of the sparse submatrix. More...
 
class  blaze::SparseSubmatrix< MT, AF, SO >::SubmatrixIterator< MatrixType, IteratorType >
 Iterator over the elements of the sparse submatrix. More...
 
class  blaze::SparseSubmatrix< MT, AF, SO >
 View on a specific submatrix of a sparse matrix.The SparseSubmatrix template represents a view on a specific submatrix of a sparse matrix primitive. The type of the sparse matrix is specified via the first template parameter: More...
 

SparseSubmatrix operators

template<typename MT , bool AF, bool SO>
void blaze::reset (SparseSubmatrix< MT, AF, SO > &sm)
 Resetting the given sparse submatrix. More...
 
template<typename MT , bool AF, bool SO>
void blaze::reset (SparseSubmatrix< MT, AF, SO > &sm, size_t i)
 Reset the specified row/column of the given sparse submatrix. More...
 
template<typename MT , bool AF, bool SO>
void blaze::clear (SparseSubmatrix< MT, AF, SO > &sm)
 Clearing the given sparse matrix. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isDefault (const SparseSubmatrix< MT, AF, SO > &sm)
 Returns whether the given sparse submatrix is in default state. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isIntact (const SparseSubmatrix< MT, AF, SO > &sm)
 Returns whether the invariants of the given sparse submatrix are intact. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isSymmetric (const SparseSubmatrix< MT, AF, SO > &sm)
 Checks if the given sparse submatrix is symmetric. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isHermitian (const SparseSubmatrix< MT, AF, SO > &sm)
 Checks if the given sparse submatrix is Hermitian. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isLower (const SparseSubmatrix< MT, AF, SO > &sm)
 Checks if the given sparse submatrix is a lower triangular matrix. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isUniLower (const SparseSubmatrix< MT, AF, SO > &sm)
 Checks if the given sparse submatrix is a lower unitriangular matrix. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isStrictlyLower (const SparseSubmatrix< MT, AF, SO > &sm)
 Checks if the given sparse submatrix is a strictly lower triangular matrix. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isUpper (const SparseSubmatrix< MT, AF, SO > &sm)
 Checks if the given sparse submatrix is an upper triangular matrix. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isUniUpper (const SparseSubmatrix< MT, AF, SO > &sm)
 Checks if the given sparse submatrix is an upper unitriangular matrix. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isStrictlyUpper (const SparseSubmatrix< MT, AF, SO > &sm)
 Checks if the given sparse submatrix is a strictly upper triangular matrix. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isSame (const SparseSubmatrix< MT, AF, SO > &a, const SparseMatrix< MT, SO > &b)
 Returns whether the given sparse matrix and submatrix represent the same observable state. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isSame (const SparseMatrix< MT, SO > &a, const SparseSubmatrix< MT, AF, SO > &b)
 Returns whether the given sparse matrix and submatrix represent the same observable state. More...
 
template<typename MT , bool AF, bool SO>
bool blaze::isSame (const SparseSubmatrix< MT, AF, SO > &a, const SparseSubmatrix< MT, AF, SO > &b)
 Returns whether the two given submatrices represent the same observable state. More...
 

Detailed Description

Function Documentation

template<typename MT , bool AF, bool SO>
void blaze::clear ( SparseSubmatrix< MT, AF, SO > &  sm)
inline

Clearing the given sparse matrix.

Parameters
smThe sparse matrix to be cleared.
Returns
void

Clearing a sparse submatrix is equivalent to resetting it via the reset() function.

template<typename MT , bool AF, bool SO>
bool blaze::isDefault ( const SparseSubmatrix< MT, AF, SO > &  sm)
inline

Returns whether the given sparse submatrix is in default state.

Parameters
smThe sparse submatrix to be tested for its default state.
Returns
true in case the given submatrix is component-wise zero, false otherwise.

This function checks whether the submatrix is in default state. For instance, in case the submatrix is instantiated for a built-in integral or floating point data type, the function returns true in case all submatrix elements are 0 and false in case any submatrix element is not 0. The following example demonstrates the use of the isDefault function:

// ... Resizing and initialization
if( isDefault( submatrix( A, 12UL, 13UL, 22UL, 33UL ) ) ) { ... }
template<typename MT , bool AF, bool SO>
bool blaze::isHermitian ( const SparseSubmatrix< MT, AF, SO > &  sm)
inline

Checks if the given sparse submatrix is Hermitian.

Parameters
smThe sparse submatrix to be checked.
Returns
true if the submatrix is Hermitian, false if not.

This function checks if the given sparse submatrix is Hermitian. The submatrix is considered to be Hermitian if it is a square matrix whose transpose is equal to its conjugate transpose ( $ A = \overline{A^T} $). The following code example demonstrates the use of the function:

Matrix A( 32UL, 16UL );
// ... Initialization
blaze::SparseSubmatrix<Matrix> sm( A, 8UL, 8UL, 16UL, 16UL );
if( isHermitian( sm ) ) { ... }
template<typename MT , bool AF, bool SO>
bool blaze::isIntact ( const SparseSubmatrix< MT, AF, SO > &  sm)
inline

Returns whether the invariants of the given sparse submatrix are intact.

Parameters
smThe sparse submatrix to be tested.
Returns
true in case the given submatrix's invariants are intact, false otherwise.

This function checks whether the invariants of the sparse submatrix are intact, i.e. if its state is valid. In case the invariants are intact, the function returns true, else it will return false. The following example demonstrates the use of the isIntact() function:

// ... Resizing and initialization
if( isIntact( submatrix( A, 12UL, 13UL, 22UL, 33UL ) ) ) { ... }
template<typename MT , bool AF, bool SO>
bool blaze::isLower ( const SparseSubmatrix< MT, AF, SO > &  sm)
inline

Checks if the given sparse submatrix is a lower triangular matrix.

Parameters
smThe sparse submatrix to be checked.
Returns
true if the submatrix is a lower triangular matrix, false if not.

This function checks if the given sparse submatrix is a lower triangular matrix. The matrix is considered to be lower triangular if it is a square matrix of the form

\[\left(\begin{array}{*{5}{c}} l_{0,0} & 0 & 0 & \cdots & 0 \\ l_{1,0} & l_{1,1} & 0 & \cdots & 0 \\ l_{2,0} & l_{2,1} & l_{2,2} & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ l_{N,0} & l_{N,1} & l_{N,2} & \cdots & l_{N,N} \\ \end{array}\right).\]

$ 0 \times 0 $ or $ 1 \times 1 $ matrices are considered as trivially lower triangular. The following code example demonstrates the use of the function:

Matrix A( 32UL, 16UL );
// ... Initialization
blaze::SparseSubmatrix<Matrix> sm( A, 8UL, 8UL, 16UL, 16UL );
if( isLower( sm ) ) { ... }
template<typename MT , bool AF, bool SO>
bool blaze::isSame ( const SparseSubmatrix< MT, AF, SO > &  a,
const SparseMatrix< MT, SO > &  b 
)
inline

Returns whether the given sparse matrix and submatrix represent the same observable state.

Parameters
aThe sparse submatrix to be tested for its state.
bThe sparse matrix to be tested for its state.
Returns
true in case the sparse submatrix and matrix share a state, false otherwise.

This overload of the isSame function tests if the given submatrix refers to the full given sparse matrix and by that represents the same observable state. In this case, the function returns true, otherwise it returns false.

template<typename MT , bool AF, bool SO>
bool blaze::isSame ( const SparseMatrix< MT, SO > &  a,
const SparseSubmatrix< MT, AF, SO > &  b 
)
inline

Returns whether the given sparse matrix and submatrix represent the same observable state.

Parameters
aThe sparse matrix to be tested for its state.
bThe sparse submatrix to be tested for its state.
Returns
true in case the sparse matrix and submatrix share a state, false otherwise.

This overload of the isSame function tests if the given submatrix refers to the full given sparse matrix and by that represents the same observable state. In this case, the function returns true, otherwise it returns false.

template<typename MT , bool AF, bool SO>
bool blaze::isSame ( const SparseSubmatrix< MT, AF, SO > &  a,
const SparseSubmatrix< MT, AF, SO > &  b 
)
inline

Returns whether the two given submatrices represent the same observable state.

Parameters
aThe first sparse submatrix to be tested for its state.
bThe second sparse submatrix to be tested for its state.
Returns
true in case the two submatrices share a state, false otherwise.

This overload of the isSame function tests if the two given submatrices refer to exactly the same part of the same sparse matrix. In case both submatrices represent the same observable state, the function returns true, otherwise it returns false.

template<typename MT , bool AF, bool SO>
bool blaze::isStrictlyLower ( const SparseSubmatrix< MT, AF, SO > &  sm)
inline

Checks if the given sparse submatrix is a strictly lower triangular matrix.

Parameters
smThe sparse submatrix to be checked.
Returns
true if the submatrix is a strictly lower triangular matrix, false if not.

This function checks if the given sparse submatrix is a strictly lower triangular matrix. The matrix is considered to be lower triangular if it is a square matrix of the form

\[\left(\begin{array}{*{5}{c}} 0 & 0 & 0 & \cdots & 0 \\ l_{1,0} & 0 & 0 & \cdots & 0 \\ l_{2,0} & l_{2,1} & 0 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ l_{N,0} & l_{N,1} & l_{N,2} & \cdots & 0 \\ \end{array}\right).\]

The following code example demonstrates the use of the function:

Matrix A( 32UL, 16UL );
// ... Initialization
blaze::SparseSubmatrix<Matrix> sm( A, 8UL, 8UL, 16UL, 16UL );
if( isStrictlyLower( sm ) ) { ... }
template<typename MT , bool AF, bool SO>
bool blaze::isStrictlyUpper ( const SparseSubmatrix< MT, AF, SO > &  sm)
inline

Checks if the given sparse submatrix is a strictly upper triangular matrix.

Parameters
smThe sparse submatrix to be checked.
Returns
true if the submatrix is a strictly upper triangular matrix, false if not.

This function checks if the given sparse submatrix is a strictly upper triangular matrix. The matrix is considered to be upper triangular if it is a square matrix of the form

\[\left(\begin{array}{*{5}{c}} 0 & u_{0,1} & u_{0,2} & \cdots & u_{0,N} \\ 0 & 0 & u_{1,2} & \cdots & u_{1,N} \\ 0 & 0 & 0 & \cdots & u_{2,N} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 0 \\ \end{array}\right).\]

The following code example demonstrates the use of the function:

Matrix A( 32UL, 16UL );
// ... Initialization
blaze::SparseSubmatrix<Matrix> sm( A, 8UL, 8UL, 16UL, 16UL );
if( isStrictlyUpper( sm ) ) { ... }
template<typename MT , bool AF, bool SO>
bool blaze::isSymmetric ( const SparseSubmatrix< MT, AF, SO > &  sm)
inline

Checks if the given sparse submatrix is symmetric.

Parameters
smThe sparse submatrix to be checked.
Returns
true if the submatrix is symmetric, false if not.

This function checks if the given sparse submatrix is symmetric. The submatrix is considered to be symmetric if it is a square matrix whose transpose is equal to itself ( $ A = A^T $). The following code example demonstrates the use of the function:

Matrix A( 32UL, 16UL );
// ... Initialization
blaze::SparseSubmatrix<Matrix> sm( A, 8UL, 8UL, 16UL, 16UL );
if( isSymmetric( sm ) ) { ... }
template<typename MT , bool AF, bool SO>
bool blaze::isUniLower ( const SparseSubmatrix< MT, AF, SO > &  sm)
inline

Checks if the given sparse submatrix is a lower unitriangular matrix.

Parameters
smThe sparse submatrix to be checked.
Returns
true if the submatrix is a lower unitriangular matrix, false if not.

This function checks if the given sparse submatrix is a lower unitriangular matrix. The matrix is considered to be lower triangular if it is a square matrix of the form

\[\left(\begin{array}{*{5}{c}} 1 & 0 & 0 & \cdots & 0 \\ l_{1,0} & 1 & 0 & \cdots & 0 \\ l_{2,0} & l_{2,1} & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ l_{N,0} & l_{N,1} & l_{N,2} & \cdots & 1 \\ \end{array}\right).\]

The following code example demonstrates the use of the function:

Matrix A( 32UL, 16UL );
// ... Initialization
blaze::SparseSubmatrix<Matrix> sm( A, 8UL, 8UL, 16UL, 16UL );
if( isUniLower( sm ) ) { ... }
template<typename MT , bool AF, bool SO>
bool blaze::isUniUpper ( const SparseSubmatrix< MT, AF, SO > &  sm)
inline

Checks if the given sparse submatrix is an upper unitriangular matrix.

Parameters
smThe sparse submatrix to be checked.
Returns
true if the submatrix is an upper unitriangular matrix, false if not.

This function checks if the given sparse submatrix is an upper triangular matrix. The matrix is considered to be upper triangular if it is a square matrix of the form

\[\left(\begin{array}{*{5}{c}} 1 & u_{0,1} & u_{0,2} & \cdots & u_{0,N} \\ 0 & 1 & u_{1,2} & \cdots & u_{1,N} \\ 0 & 0 & 1 & \cdots & u_{2,N} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 1 \\ \end{array}\right).\]

The following code example demonstrates the use of the function:

Matrix A( 32UL, 16UL );
// ... Initialization
blaze::SparseSubmatrix<Matrix> sm( A, 8UL, 8UL, 16UL, 16UL );
if( isUniUpper( sm ) ) { ... }
template<typename MT , bool AF, bool SO>
bool blaze::isUpper ( const SparseSubmatrix< MT, AF, SO > &  sm)
inline

Checks if the given sparse submatrix is an upper triangular matrix.

Parameters
smThe sparse submatrix to be checked.
Returns
true if the submatrix is an upper triangular matrix, false if not.

This function checks if the given sparse submatrix is an upper triangular matrix. The matrix is considered to be upper triangular if it is a square matrix of the form

\[\left(\begin{array}{*{5}{c}} u_{0,0} & u_{0,1} & u_{0,2} & \cdots & u_{0,N} \\ 0 & u_{1,1} & u_{1,2} & \cdots & u_{1,N} \\ 0 & 0 & u_{2,2} & \cdots & u_{2,N} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & u_{N,N} \\ \end{array}\right).\]

$ 0 \times 0 $ or $ 1 \times 1 $ matrices are considered as trivially upper triangular. The following code example demonstrates the use of the function:

Matrix A( 32UL, 16UL );
// ... Initialization
blaze::SparseSubmatrix<Matrix> sm( A, 8UL, 8UL, 16UL, 16UL );
if( isUpper( sm ) ) { ... }
template<typename MT , bool AF, bool SO>
void blaze::reset ( SparseSubmatrix< MT, AF, SO > &  sm)
inline

Resetting the given sparse submatrix.

Parameters
smThe sparse submatrix to be resetted.
Returns
void
template<typename MT , bool AF, bool SO>
void blaze::reset ( SparseSubmatrix< MT, AF, SO > &  sm,
size_t  i 
)
inline

Reset the specified row/column of the given sparse submatrix.

Parameters
smThe sparse submatrix to be resetted.
iThe index of the row/column to be resetted.
Returns
void

This function resets the values in the specified row/column of the given sparse submatrix to their default value. In case the given submatrix is a rowMajor matrix the function resets the values in row i, if it is a columnMajor matrix the function resets the values in column i. Note that the capacity of the row/column remains unchanged.