template<typename MatrixType, unsigned int _Mode>
Eigen::SparseSelfAdjointView class

Pseudo expression to manipulate a triangular sparse matrix as a selfadjoint matrix.

This class is an expression of a sefladjoint matrix from a triangular part of a matrix with given dense storage of the coefficients. It is the return type of MatrixBase::selfadjointView() and most of the time this is the only way that it is used.

Base classes

template<typename Derived>
class EigenBase

Public functions

template<typename OtherDerived>
auto operator*(const SparseMatrixBase<OtherDerived>& rhs) const -> Product<SparseSelfAdjointView, OtherDerived>
template<typename OtherDerived>
auto operator*(const MatrixBase<OtherDerived>& rhs) const -> Product<SparseSelfAdjointView, OtherDerived>
template<typename DerivedU>
auto rankUpdate(const SparseMatrixBase<DerivedU>& u, const Scalar& alpha = Scalar(1)) -> SparseSelfAdjointView&
auto twistedBy(const PermutationMatrix<Dynamic, Dynamic, StorageIndex>& perm) const -> SparseSymmetricPermutationProduct<_MatrixTypeNested, Mode>

Friends

template<typename OtherDerived>
auto operator*(const SparseMatrixBase<OtherDerived>& lhs, const SparseSelfAdjointView& rhs) -> Product<OtherDerived, SparseSelfAdjointView>
template<typename OtherDerived>
auto operator*(const MatrixBase<OtherDerived>& lhs, const SparseSelfAdjointView& rhs) -> Product<OtherDerived, SparseSelfAdjointView>

Function documentation

template<typename MatrixType, unsigned int _Mode> template<typename OtherDerived>
Product<SparseSelfAdjointView, OtherDerived> Eigen::SparseSelfAdjointView<MatrixType, _Mode>::operator*(const SparseMatrixBase<OtherDerived>& rhs) const

Returns an expression of the matrix product between a sparse self-adjoint matrix *this and a sparse matrix rhs.

Note that there is no algorithmic advantage of performing such a product compared to a general sparse-sparse matrix product. Indeed, the SparseSelfadjointView operand is first copied into a temporary SparseMatrix before computing the product.

template<typename MatrixType, unsigned int _Mode> template<typename OtherDerived>
Product<SparseSelfAdjointView, OtherDerived> Eigen::SparseSelfAdjointView<MatrixType, _Mode>::operator*(const MatrixBase<OtherDerived>& rhs) const

Efficient sparse self-adjoint matrix times dense vector/matrix product

template<typename MatrixType, unsigned int _Mode> template<typename DerivedU>
SparseSelfAdjointView& Eigen::SparseSelfAdjointView<MatrixType, _Mode>::rankUpdate(const SparseMatrixBase<DerivedU>& u, const Scalar& alpha = Scalar(1))

Returns a reference to *this

Perform a symmetric rank K update of the selfadjoint matrix *this: $ this = this + \alpha ( u u^* ) $ where u is a vector or matrix.

To perform $ this = this + \alpha ( u^* u ) $ you can simply call this function with u.adjoint().

template<typename MatrixType, unsigned int _Mode>
SparseSymmetricPermutationProduct<_MatrixTypeNested, Mode> Eigen::SparseSelfAdjointView<MatrixType, _Mode>::twistedBy(const PermutationMatrix<Dynamic, Dynamic, StorageIndex>& perm) const

Returns an expression of P H P^-1

template<typename MatrixType, unsigned int _Mode> template<typename OtherDerived>
Product<OtherDerived, SparseSelfAdjointView> operator*(const SparseMatrixBase<OtherDerived>& lhs, const SparseSelfAdjointView& rhs)

Returns an expression of the matrix product between a sparse matrix lhs and a sparse self-adjoint matrix rhs.

Note that there is no algorithmic advantage of performing such a product compared to a general sparse-sparse matrix product. Indeed, the SparseSelfadjointView operand is first copied into a temporary SparseMatrix before computing the product.

template<typename MatrixType, unsigned int _Mode> template<typename OtherDerived>
Product<OtherDerived, SparseSelfAdjointView> operator*(const MatrixBase<OtherDerived>& lhs, const SparseSelfAdjointView& rhs)

Efficient dense vector/matrix times sparse self-adjoint matrix product