Base class for triangular part in a matrix. More...
#include <TriangularMatrix.h>
Public Types | |
enum | |
enum | { Mode, TransposeMode } |
typedef TriangularBase < TriangularView > | Base |
typedef internal::traits < TriangularView > ::DenseMatrixType | DenseMatrixType |
typedef DenseMatrixType | DenseType |
typedef internal::traits < TriangularView >::Index | Index |
typedef _MatrixType | MatrixType |
typedef DenseMatrixType | PlainObject |
typedef internal::traits < TriangularView >::Scalar | Scalar |
typedef internal::traits < TriangularView > ::StorageKind | StorageKind |
Public Member Functions | |
void | addTo (Dest &dst) const |
const TriangularView< const typename MatrixType::AdjointReturnType, TransposeMode > | adjoint () const |
void | applyThisOnTheLeft (Dest &dst) const |
void | applyThisOnTheRight (Dest &dst) const |
template<typename ProductDerived , typename _Lhs , typename _Rhs > | |
TriangularView< MatrixType, UpLo > & | assignProduct (const ProductBase< ProductDerived, _Lhs, _Rhs > &prod, const Scalar &alpha) |
Scalar | coeff (Index row, Index col) const |
Scalar | coeff (Index row, Index col) const |
Scalar & | coeffRef (Index row, Index col) |
Scalar & | coeffRef (Index row, Index col) |
Index | cols () const |
TriangularView < MatrixConjugateReturnType, Mode > | conjugate () |
const TriangularView < MatrixConjugateReturnType, Mode > | conjugate () const |
TriangularView< _MatrixType, _Mode > & | const_cast_derived () const |
const TriangularView < _MatrixType, _Mode > & | const_derived () const |
void | copyCoeff (Index row, Index col, Other &other) |
TriangularView< _MatrixType, _Mode > & | derived () |
const TriangularView < _MatrixType, _Mode > & | derived () const |
Scalar | determinant () const |
void | evalTo (Dest &dst) const |
void | evalTo (MatrixBase< DenseDerived > &other) const |
void | evalToLazy (MatrixBase< DenseDerived > &other) const |
void | fill (const Scalar &value) |
Index | innerStride () const |
template<typename OtherDerived > | |
void | lazyAssign (const TriangularBase< OtherDerived > &other) |
template<typename OtherDerived > | |
void | lazyAssign (const MatrixBase< OtherDerived > &other) |
const MatrixTypeNestedCleaned & | nestedExpression () const |
MatrixTypeNestedCleaned & | nestedExpression () |
Scalar | operator() (Index row, Index col) const |
Scalar & | operator() (Index row, Index col) |
template<typename OtherDerived > | |
TriangularProduct< Mode, true, MatrixType, false, OtherDerived, OtherDerived::IsVectorAtCompileTime > | operator* (const MatrixBase< OtherDerived > &rhs) const |
TriangularView & | operator*= (const typename internal::traits< MatrixType >::Scalar &other) |
template<typename Other > | |
TriangularView & | operator+= (const DenseBase< Other > &other) |
template<typename ProductDerived , typename Lhs , typename Rhs > | |
TriangularView & | operator+= (const ProductBase< ProductDerived, Lhs, Rhs > &other) |
template<typename ProductDerived > | |
TriangularView & | operator+= (const ScaledProduct< ProductDerived > &other) |
template<typename Other > | |
TriangularView & | operator-= (const DenseBase< Other > &other) |
template<typename ProductDerived , typename Lhs , typename Rhs > | |
TriangularView & | operator-= (const ProductBase< ProductDerived, Lhs, Rhs > &other) |
template<typename ProductDerived > | |
TriangularView & | operator-= (const ScaledProduct< ProductDerived > &other) |
TriangularView & | operator/= (const typename internal::traits< MatrixType >::Scalar &other) |
template<typename OtherDerived > | |
TriangularView & | operator= (const TriangularBase< OtherDerived > &other) |
template<typename OtherDerived > | |
TriangularView & | operator= (const MatrixBase< OtherDerived > &other) |
TriangularView & | operator= (const TriangularView &other) |
template<typename ProductDerived , typename Lhs , typename Rhs > | |
TriangularView & | operator= (const ProductBase< ProductDerived, Lhs, Rhs > &other) |
template<typename ProductDerived > | |
TriangularView & | operator= (const ScaledProduct< ProductDerived > &other) |
Index | outerStride () const |
Index | rows () const |
const SelfAdjointView < MatrixTypeNestedNonRef, Mode > | selfadjointView () const |
SelfAdjointView < MatrixTypeNestedNonRef, Mode > | selfadjointView () |
TriangularView & | setConstant (const Scalar &value) |
TriangularView & | setOnes () |
TriangularView & | setZero () |
Index | size () const |
template<int Side, typename Other > | |
const internal::triangular_solve_retval < Side, TriangularView, Other > | solve (const MatrixBase< Other > &other) const |
template<typename Other > | |
const internal::triangular_solve_retval < OnTheLeft, TriangularView, Other > | solve (const MatrixBase< Other > &other) const |
template<int Side, typename OtherDerived > | |
void | solveInPlace (const MatrixBase< OtherDerived > &other) const |
template<typename OtherDerived > | |
void | solveInPlace (const MatrixBase< OtherDerived > &other) const |
void | subTo (Dest &dst) const |
template<typename OtherDerived > | |
void | swap (TriangularBase< OtherDerived > const &other) |
template<typename OtherDerived > | |
void | swap (MatrixBase< OtherDerived > const &other) |
DenseMatrixType | toDenseMatrix () const |
TriangularView< Transpose < MatrixType >, TransposeMode > | transpose () |
const TriangularView < Transpose< MatrixType > , TransposeMode > | transpose () const |
TriangularView (const MatrixType &matrix) | |
Protected Types | |
typedef internal::remove_all < typename MatrixType::ConjugateReturnType > ::type | MatrixConjugateReturnType |
typedef internal::traits < TriangularView > ::MatrixTypeNested | MatrixTypeNested |
typedef internal::traits < TriangularView > ::MatrixTypeNestedCleaned | MatrixTypeNestedCleaned |
typedef internal::traits < TriangularView > ::MatrixTypeNestedNonRef | MatrixTypeNestedNonRef |
Protected Member Functions | |
template<typename ProductDerived , typename Lhs , typename Rhs > | |
TriangularView & | assignProduct (const ProductBase< ProductDerived, Lhs, Rhs > &prod, const Scalar &alpha) |
void | check_coordinates (Index row, Index col) const |
void | check_coordinates_internal (Index, Index) const |
Protected Attributes | |
MatrixTypeNested | m_matrix |
Friends | |
template<typename OtherDerived > | |
TriangularProduct< Mode, false, OtherDerived, OtherDerived::IsVectorAtCompileTime, MatrixType, false > | operator* (const MatrixBase< OtherDerived > &lhs, const TriangularView &rhs) |
Base class for triangular part in a matrix.
MatrixType | the type of the object in which we are taking the triangular part |
Mode | the kind of triangular matrix expression to construct. Can be Upper, Lower, UnitUpper, UnitLower, StrictlyUpper, or StrictlyLower. This is in fact a bit field; it must have either Upper or Lower, and additionnaly it may have UnitDiag or ZeroDiag or neither. |
This class represents a triangular part of a matrix, not necessarily square. Strictly speaking, for rectangular matrices one should speak of "trapezoid" parts. This class is the return type of MatrixBase::triangularView() and most of the time this is the only way it is used.
typedef TriangularBase<TriangularView> Base |
typedef internal::traits<TriangularView>::DenseMatrixType DenseMatrixType |
Reimplemented from TriangularBase< TriangularView< _MatrixType, _Mode > >.
typedef DenseMatrixType DenseType [inherited] |
typedef internal::traits<TriangularView>::Index Index |
Reimplemented from TriangularBase< TriangularView< _MatrixType, _Mode > >.
typedef internal::remove_all<typename MatrixType::ConjugateReturnType>::type MatrixConjugateReturnType [protected] |
typedef _MatrixType MatrixType |
typedef internal::traits<TriangularView>::MatrixTypeNested MatrixTypeNested [protected] |
typedef internal::traits<TriangularView>::MatrixTypeNestedCleaned MatrixTypeNestedCleaned [protected] |
typedef internal::traits<TriangularView>::MatrixTypeNestedNonRef MatrixTypeNestedNonRef [protected] |
typedef DenseMatrixType PlainObject |
typedef internal::traits<TriangularView>::Scalar Scalar |
Reimplemented from TriangularBase< TriangularView< _MatrixType, _Mode > >.
typedef internal::traits<TriangularView>::StorageKind StorageKind |
Reimplemented from TriangularBase< TriangularView< _MatrixType, _Mode > >.
anonymous enum [inherited] |
TriangularView | ( | const MatrixType & | matrix | ) | [inline] |
void addTo | ( | Dest & | dst | ) | const [inline, inherited] |
const TriangularView<const typename MatrixType::AdjointReturnType,TransposeMode> adjoint | ( | ) | const [inline] |
References TriangularView< _MatrixType, _Mode >::m_matrix.
Referenced by Eigen::internal::apply_block_householder_on_the_left().
void applyThisOnTheLeft | ( | Dest & | dst | ) | const [inline, inherited] |
void applyThisOnTheRight | ( | Dest & | dst | ) | const [inline, inherited] |
TriangularView<MatrixType,UpLo>& assignProduct | ( | const ProductBase< ProductDerived, _Lhs, _Rhs > & | prod, |
const Scalar & | alpha | ||
) |
TriangularView& assignProduct | ( | const ProductBase< ProductDerived, Lhs, Rhs > & | prod, |
const Scalar & | alpha | ||
) | [inline, protected] |
void check_coordinates | ( | Index | row, |
Index | col | ||
) | const [inline, protected, inherited] |
void check_coordinates_internal | ( | Index | , |
Index | |||
) | const [inline, protected, inherited] |
References TriangularBase< Derived >::check_coordinates_internal(), and TriangularView< _MatrixType, _Mode >::m_matrix.
References TriangularBase< Derived >::check_coordinates_internal(), and TriangularView< _MatrixType, _Mode >::m_matrix.
Reimplemented from TriangularBase< TriangularView< _MatrixType, _Mode > >.
References TriangularView< _MatrixType, _Mode >::m_matrix.
Referenced by TriangularView< _MatrixType, _Mode >::setConstant().
TriangularView<MatrixConjugateReturnType,Mode> conjugate | ( | ) | [inline] |
References TriangularView< _MatrixType, _Mode >::m_matrix.
const TriangularView<MatrixConjugateReturnType,Mode> conjugate | ( | ) | const [inline] |
References TriangularView< _MatrixType, _Mode >::m_matrix.
TriangularView< _MatrixType, _Mode > & const_cast_derived | ( | ) | const [inline, inherited] |
const TriangularView< _MatrixType, _Mode > & const_derived | ( | ) | const [inline, inherited] |
TriangularView< _MatrixType, _Mode > & derived | ( | ) | [inline, inherited] |
const TriangularView< _MatrixType, _Mode > & derived | ( | ) | const [inline, inherited] |
Scalar determinant | ( | ) | const [inline] |
void evalTo | ( | Dest & | dst | ) | const [inline, inherited] |
void evalTo | ( | MatrixBase< DenseDerived > & | other | ) | const [inherited] |
Assigns a triangular or selfadjoint matrix to a dense matrix. If the matrix is triangular, the opposite part is set to zero.
void evalToLazy | ( | MatrixBase< DenseDerived > & | other | ) | const [inherited] |
Assigns a triangular or selfadjoint matrix to a dense matrix. If the matrix is triangular, the opposite part is set to zero.
References TriangularView< _MatrixType, _Mode >::setConstant().
Index innerStride | ( | ) | const [inline] |
Reimplemented from TriangularBase< TriangularView< _MatrixType, _Mode > >.
References TriangularView< _MatrixType, _Mode >::m_matrix.
void lazyAssign | ( | const TriangularBase< OtherDerived > & | other | ) |
void lazyAssign | ( | const MatrixBase< OtherDerived > & | other | ) |
References Eigen::Dynamic.
const MatrixTypeNestedCleaned& nestedExpression | ( | ) | const [inline] |
References TriangularView< _MatrixType, _Mode >::m_matrix.
Referenced by TriangularView< _MatrixType, _Mode >::operator=().
MatrixTypeNestedCleaned& nestedExpression | ( | ) | [inline] |
References TriangularView< _MatrixType, _Mode >::m_matrix.
TriangularProduct<Mode,true,MatrixType,false,OtherDerived, OtherDerived::IsVectorAtCompileTime> operator* | ( | const MatrixBase< OtherDerived > & | rhs | ) | const [inline] |
Efficient triangular matrix times vector/matrix product
References TriangularView< _MatrixType, _Mode >::m_matrix, and TriangularView< _MatrixType, _Mode >::Mode.
TriangularView& operator*= | ( | const typename internal::traits< MatrixType >::Scalar & | other | ) | [inline] |
References TriangularView< _MatrixType, _Mode >::m_matrix.
TriangularView& operator+= | ( | const DenseBase< Other > & | other | ) | [inline] |
References TriangularView< _MatrixType, _Mode >::m_matrix.
TriangularView& operator+= | ( | const ProductBase< ProductDerived, Lhs, Rhs > & | other | ) | [inline] |
TriangularView& operator+= | ( | const ScaledProduct< ProductDerived > & | other | ) | [inline] |
TriangularView& operator-= | ( | const DenseBase< Other > & | other | ) | [inline] |
References TriangularView< _MatrixType, _Mode >::m_matrix.
TriangularView& operator-= | ( | const ProductBase< ProductDerived, Lhs, Rhs > & | other | ) | [inline] |
TriangularView& operator-= | ( | const ScaledProduct< ProductDerived > & | other | ) | [inline] |
TriangularView& operator/= | ( | const typename internal::traits< MatrixType >::Scalar & | other | ) | [inline] |
References TriangularView< _MatrixType, _Mode >::m_matrix.
TriangularView< MatrixType, Mode > & operator= | ( | const TriangularBase< OtherDerived > & | other | ) | [inline] |
Assigns a triangular matrix to a triangular part of a dense matrix
References TriangularBase< Derived >::cols(), EigenBase< Derived >::derived(), Eigen::EvalBeforeAssigningBit, and TriangularBase< Derived >::rows().
TriangularView< MatrixType, Mode > & operator= | ( | const MatrixBase< OtherDerived > & | other | ) | [inline] |
References Eigen::EvalBeforeAssigningBit.
TriangularView& operator= | ( | const TriangularView< _MatrixType, _Mode > & | other | ) | [inline] |
TriangularView& operator= | ( | const ProductBase< ProductDerived, Lhs, Rhs > & | other | ) | [inline] |
TriangularView& operator= | ( | const ScaledProduct< ProductDerived > & | other | ) | [inline] |
Index outerStride | ( | ) | const [inline] |
Reimplemented from TriangularBase< TriangularView< _MatrixType, _Mode > >.
References TriangularView< _MatrixType, _Mode >::m_matrix.
Reimplemented from TriangularBase< TriangularView< _MatrixType, _Mode > >.
References TriangularView< _MatrixType, _Mode >::m_matrix.
Referenced by TriangularView< _MatrixType, _Mode >::setConstant().
const SelfAdjointView<MatrixTypeNestedNonRef,Mode> selfadjointView | ( | ) | const [inline] |
SelfAdjointView<MatrixTypeNestedNonRef,Mode> selfadjointView | ( | ) | [inline] |
TriangularView& setConstant | ( | const Scalar & | value | ) | [inline] |
References TriangularView< _MatrixType, _Mode >::cols(), and TriangularView< _MatrixType, _Mode >::rows().
Referenced by TriangularView< _MatrixType, _Mode >::fill(), TriangularView< _MatrixType, _Mode >::setOnes(), and TriangularView< _MatrixType, _Mode >::setZero().
TriangularView& setOnes | ( | ) | [inline] |
References TriangularView< _MatrixType, _Mode >::setConstant().
TriangularView& setZero | ( | ) | [inline] |
References TriangularView< _MatrixType, _Mode >::setConstant().
Referenced by TriangularView< _MatrixType, _Mode >::operator=().
const internal::triangular_solve_retval< Side, TriangularView< Derived, Mode >, Other > solve | ( | const MatrixBase< Other > & | other | ) | const [inline] |
*this
with other, *this being triangular.This function computes the inverse-matrix matrix product inverse(*this
) * other if Side==OnTheLeft (the default), or the right-inverse-multiply other * inverse(*this
) if Side==OnTheRight.
The matrix *this
must be triangular and invertible (i.e., all the coefficients of the diagonal must be non zero). It works as a forward (resp. backward) substitution if *this
is an upper (resp. lower) triangular matrix.
Example:
#ifndef _MSC_VER #warning deprecated #endif /* Matrix3d m = Matrix3d::Zero(); m.part<Eigen::UpperTriangular>().setOnes(); cout << "Here is the matrix m:" << endl << m << endl; Matrix3d n = Matrix3d::Ones(); n.part<Eigen::LowerTriangular>() *= 2; cout << "Here is the matrix n:" << endl << n << endl; cout << "And now here is m.inverse()*n, taking advantage of the fact that" " m is upper-triangular:" << endl << m.marked<Eigen::UpperTriangular>().solveTriangular(n); */
Output:
This function returns an expression of the inverse-multiply and can works in-place if it is assigned to the same matrix or vector other.
For users coming from BLAS, this function (and more specifically solveInPlace()) offer all the operations supported by the *TRSV
and *TRSM
BLAS routines.
const internal::triangular_solve_retval<OnTheLeft,TriangularView, Other> solve | ( | const MatrixBase< Other > & | other | ) | const [inline] |
void solveInPlace | ( | const MatrixBase< OtherDerived > & | _other | ) | const |
"in-place" version of TriangularView::solve() where the result is written in other
See TriangularView:solve() for the details.
References Eigen::Lower, Eigen::OnTheLeft, Eigen::OnTheRight, Eigen::Upper, and Eigen::ZeroDiag.
void solveInPlace | ( | const MatrixBase< OtherDerived > & | other | ) | const [inline] |
void subTo | ( | Dest & | dst | ) | const [inline, inherited] |
void swap | ( | TriangularBase< OtherDerived > const & | other | ) | [inline] |
void swap | ( | MatrixBase< OtherDerived > const & | other | ) | [inline] |
DenseMatrixType toDenseMatrix | ( | ) | const [inline, inherited] |
TriangularView<Transpose<MatrixType>,TransposeMode> transpose | ( | ) | [inline] |
References EIGEN_STATIC_ASSERT_LVALUE, and TriangularView< _MatrixType, _Mode >::m_matrix.
const TriangularView<Transpose<MatrixType>,TransposeMode> transpose | ( | ) | const [inline] |
References TriangularView< _MatrixType, _Mode >::m_matrix.
TriangularProduct<Mode,false,OtherDerived,OtherDerived::IsVectorAtCompileTime,MatrixType,false> operator* | ( | const MatrixBase< OtherDerived > & | lhs, |
const TriangularView< _MatrixType, _Mode > & | rhs | ||
) | [friend] |
Efficient vector/matrix times triangular matrix product
MatrixTypeNested m_matrix [protected] |
Referenced by TriangularView< _MatrixType, _Mode >::adjoint(), TriangularView< _MatrixType, _Mode >::coeff(), TriangularView< _MatrixType, _Mode >::coeffRef(), TriangularView< _MatrixType, _Mode >::cols(), TriangularView< _MatrixType, _Mode >::conjugate(), TriangularView< _MatrixType, _Mode >::determinant(), TriangularView< _MatrixType, _Mode >::innerStride(), TriangularView< _MatrixType, _Mode >::nestedExpression(), TriangularView< _MatrixType, _Mode >::operator*(), TriangularView< _MatrixType, _Mode >::operator*=(), TriangularView< _MatrixType, _Mode >::operator+=(), TriangularView< _MatrixType, _Mode >::operator-=(), TriangularView< _MatrixType, _Mode >::operator/=(), TriangularView< _MatrixType, _Mode >::outerStride(), TriangularView< _MatrixType, _Mode >::rows(), TriangularView< _MatrixType, _Mode >::selfadjointView(), TriangularView< _MatrixType, _Mode >::swap(), and TriangularView< _MatrixType, _Mode >::transpose().