Eigen  5.0.1
 
Loading...
Searching...
No Matches
Eigen::BlockSparseTriangularView< BSM, Mode, DiagIsTriangular > Class Template Reference

#include <Eigen/src/SparseCore/BlockSparseMatrix.h>

Detailed Description

template<typename BSM, int Mode, bool DiagIsTriangular = false>
class Eigen::BlockSparseTriangularView< BSM, Mode, DiagIsTriangular >

Lazy block-level triangular view of a BlockSparseMatrix.

Obtained via BSM::triangularView<Mode>() or BSM::triangularView<Mode, true>() (the latter asserts that the unused triangle of every diagonal block is already zero, enabling faster vectorised products without an explicit triangularView on the block).

By default (DiagIsTriangular = false) diagonal blocks are treated as triangular regardless of what is stored in the unused half: products call block.triangularView<DiagMode>() and eval() zeroes the unused triangle. Set DiagIsTriangular = true to skip that overhead when you can guarantee the unused triangle is already zero.

Classes

struct  AdjointReturnType
 
struct  TransposeReturnType
 

Public Member Functions

BSM eval () const
 
template<int RhsBlockCols>
BlockSparseMatrix< Scalar, BSM::Options, BlockRows, RhsBlockCols, StorageIndex > operator* (const BlockSparseMatrix< Scalar, BSM::Options, BlockCols, RhsBlockCols, StorageIndex > &rhs) const
 
template<typename Derived>
void solveInPlace (MatrixBase< Derived > &x) const
 
SparseMatrix< Scalar, BSM::Options, StorageIndex > toSparse () const
 

Member Function Documentation

◆ eval()

template<typename BSM, int Mode, bool DiagIsTriangular = false>
BSM Eigen::BlockSparseTriangularView< BSM, Mode, DiagIsTriangular >::eval ( ) const
inline

Copy the triangular blocks into a new BSM; off-triangle blocks are dropped. When DiagIsTriangular is false the unused triangle of each diagonal block is explicitly zeroed in the output.

◆ operator*()

template<typename BSM, int Mode, bool DiagIsTriangular = false>
template<int RhsBlockCols>
BlockSparseMatrix< Scalar, BSM::Options, BlockRows, RhsBlockCols, StorageIndex > Eigen::BlockSparseTriangularView< BSM, Mode, DiagIsTriangular >::operator* ( const BlockSparseMatrix< Scalar, BSM::Options, BlockCols, RhsBlockCols, StorageIndex > & rhs) const
inline

Tri × BSM product (materialises this view then delegates).

◆ solveInPlace()

template<typename BSM, int Mode, bool DiagIsTriangular = false>
template<typename Derived>
void Eigen::BlockSparseTriangularView< BSM, Mode, DiagIsTriangular >::solveInPlace ( MatrixBase< Derived > & x) const
inline

Solve T * x = rhs in-place. Requires square blocks. ColMajor Lower: forward sub, diagonal first per column. ColMajor Upper: backward sub, diagonal last per column. RowMajor Lower: forward sub, diagonal last per row. RowMajor Upper: backward sub, diagonal first per row.

◆ toSparse()

template<typename BSM, int Mode, bool DiagIsTriangular = false>
SparseMatrix< Scalar, BSM::Options, StorageIndex > Eigen::BlockSparseTriangularView< BSM, Mode, DiagIsTriangular >::toSparse ( ) const
inline

Convert to a scalar-level SparseMatrix (off-triangle blocks zeroed).


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