Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends

TriangularView< _MatrixType, _Mode > Class Template Reference

Base class for triangular part in a matrix. More...

#include <TriangularMatrix.h>

Inheritance diagram for TriangularView< _MatrixType, _Mode >:
TriangularBase< TriangularView< _MatrixType, _Mode > > EigenBase< TriangularView< _MatrixType, _Mode > >

List of all members.

Public Types

enum  { Mode = _Mode, TransposeMode }
typedef TriangularBase
< TriangularView
Base
typedef internal::traits
< TriangularView >::Scalar 
Scalar
typedef _MatrixType MatrixType
typedef internal::traits
< TriangularView >
::DenseMatrixType 
DenseMatrixType
typedef DenseMatrixType PlainObject
typedef internal::traits
< TriangularView >
::StorageKind 
StorageKind
typedef internal::traits
< TriangularView >::Index 
Index

Public Member Functions

 TriangularView (const MatrixType &matrix)
Index rows () const
Index cols () const
Index outerStride () const
Index innerStride () const
template<typename Other >
TriangularViewoperator+= (const DenseBase< Other > &other)
template<typename Other >
TriangularViewoperator-= (const DenseBase< Other > &other)
TriangularViewoperator*= (const typename internal::traits< MatrixType >::Scalar &other)
TriangularViewoperator/= (const typename internal::traits< MatrixType >::Scalar &other)
void fill (const Scalar &value)
TriangularViewsetConstant (const Scalar &value)
TriangularViewsetZero ()
TriangularViewsetOnes ()
Scalar coeff (Index row, Index col) const
ScalarcoeffRef (Index row, Index col)
const MatrixTypeNestedCleanednestedExpression () const
MatrixTypeNestedCleanednestedExpression ()
template<typename OtherDerived >
TriangularViewoperator= (const TriangularBase< OtherDerived > &other)
template<typename OtherDerived >
TriangularViewoperator= (const MatrixBase< OtherDerived > &other)
TriangularViewoperator= (const TriangularView &other)
template<typename OtherDerived >
void lazyAssign (const TriangularBase< OtherDerived > &other)
template<typename OtherDerived >
void lazyAssign (const MatrixBase< OtherDerived > &other)
TriangularView
< MatrixConjugateReturnType,
Mode > 
conjugate ()
const TriangularView
< MatrixConjugateReturnType,
Mode > 
conjugate () const
TriangularView< typename
MatrixType::AdjointReturnType,
TransposeMode > 
adjoint ()
const TriangularView< typename
MatrixType::AdjointReturnType,
TransposeMode > 
adjoint () const
TriangularView< Transpose
< MatrixType >, TransposeMode > 
transpose ()
const TriangularView
< Transpose< MatrixType >
, TransposeMode > 
transpose () const
template<typename OtherDerived >
TriangularProduct< Mode, true,
MatrixType, false,
OtherDerived,
OtherDerived::IsVectorAtCompileTime > 
operator* (const MatrixBase< OtherDerived > &rhs) const
template<int Side, typename Other >
const
internal::triangular_solve_retval
< Side, TriangularView, Other > 
solve (const MatrixBase< Other > &other) const
template<int Side, typename OtherDerived >
void solveInPlace (const MatrixBase< OtherDerived > &other) const
template<typename Other >
const
internal::triangular_solve_retval
< OnTheLeft, TriangularView,
Other > 
solve (const MatrixBase< Other > &other) const
template<typename OtherDerived >
void solveInPlace (const MatrixBase< OtherDerived > &other) const
const SelfAdjointView
< MatrixTypeNestedNonRef, Mode > 
selfadjointView () const
SelfAdjointView
< MatrixTypeNestedNonRef, Mode > 
selfadjointView ()
template<typename OtherDerived >
void swap (TriangularBase< OtherDerived > const &other)
template<typename OtherDerived >
void swap (MatrixBase< OtherDerived > const &other)
Scalar determinant () const
template<typename ProductDerived , typename Lhs , typename Rhs >
EIGEN_STRONG_INLINE
TriangularView
operator= (const ProductBase< ProductDerived, Lhs, Rhs > &other)
template<typename ProductDerived , typename Lhs , typename Rhs >
EIGEN_STRONG_INLINE
TriangularView
operator+= (const ProductBase< ProductDerived, Lhs, Rhs > &other)
template<typename ProductDerived , typename Lhs , typename Rhs >
EIGEN_STRONG_INLINE
TriangularView
operator-= (const ProductBase< ProductDerived, Lhs, Rhs > &other)
template<typename ProductDerived >
EIGEN_STRONG_INLINE
TriangularView
operator= (const ScaledProduct< ProductDerived > &other)
template<typename ProductDerived >
EIGEN_STRONG_INLINE
TriangularView
operator+= (const ScaledProduct< ProductDerived > &other)
template<typename ProductDerived >
EIGEN_STRONG_INLINE
TriangularView
operator-= (const ScaledProduct< ProductDerived > &other)
template<typename ProductDerived , typename _Lhs , typename _Rhs >
TriangularView< MatrixType,
UpLo > & 
assignProduct (const ProductBase< ProductDerived, _Lhs, _Rhs > &prod, const Scalar &alpha)

Protected Types

typedef internal::traits
< TriangularView >
::MatrixTypeNested 
MatrixTypeNested
typedef internal::traits
< TriangularView >
::MatrixTypeNestedNonRef 
MatrixTypeNestedNonRef
typedef internal::traits
< TriangularView >
::MatrixTypeNestedCleaned 
MatrixTypeNestedCleaned
typedef internal::remove_all
< typename
MatrixType::ConjugateReturnType >
::type 
MatrixConjugateReturnType

Protected Member Functions

template<typename ProductDerived , typename Lhs , typename Rhs >
EIGEN_STRONG_INLINE
TriangularView
assignProduct (const ProductBase< ProductDerived, Lhs, Rhs > &prod, const Scalar &alpha)

Protected Attributes

const MatrixTypeNested m_matrix

Friends

template<typename OtherDerived >
TriangularProduct< Mode, false,
OtherDerived,
OtherDerived::IsVectorAtCompileTime,
MatrixType, false > 
operator* (const MatrixBase< OtherDerived > &lhs, const TriangularView &rhs)

Detailed Description

template<typename _MatrixType, unsigned int _Mode>
class TriangularView< _MatrixType, _Mode >

Base class for triangular part in a matrix.

Parameters:
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, UpperSelfadjoint, or LowerSelfadjoint. This is in fact a bit field; it must have either Upper or Lower, and additionnaly it may have either UnitDiag or Selfadjoint.

This class represents a triangular part of a matrix, not necessarily square. Strictly speaking, for rectangular matrices one should speak ok "trapezoid" parts. This class is the return type of MatrixBase::triangularView() and most of the time this is the only way it is used.

See also:
MatrixBase::triangularView()

Member Typedef Documentation

template<typename _MatrixType, unsigned int _Mode>
typedef TriangularBase<TriangularView> TriangularView< _MatrixType, _Mode >::Base
template<typename _MatrixType, unsigned int _Mode>
typedef internal::traits<TriangularView>::DenseMatrixType TriangularView< _MatrixType, _Mode >::DenseMatrixType
template<typename _MatrixType, unsigned int _Mode>
typedef internal::traits<TriangularView>::Index TriangularView< _MatrixType, _Mode >::Index
template<typename _MatrixType, unsigned int _Mode>
typedef internal::remove_all<typename MatrixType::ConjugateReturnType>::type TriangularView< _MatrixType, _Mode >::MatrixConjugateReturnType [protected]
template<typename _MatrixType, unsigned int _Mode>
typedef _MatrixType TriangularView< _MatrixType, _Mode >::MatrixType
template<typename _MatrixType, unsigned int _Mode>
typedef internal::traits<TriangularView>::MatrixTypeNested TriangularView< _MatrixType, _Mode >::MatrixTypeNested [protected]
template<typename _MatrixType, unsigned int _Mode>
typedef internal::traits<TriangularView>::MatrixTypeNestedCleaned TriangularView< _MatrixType, _Mode >::MatrixTypeNestedCleaned [protected]
template<typename _MatrixType, unsigned int _Mode>
typedef internal::traits<TriangularView>::MatrixTypeNestedNonRef TriangularView< _MatrixType, _Mode >::MatrixTypeNestedNonRef [protected]
template<typename _MatrixType, unsigned int _Mode>
typedef DenseMatrixType TriangularView< _MatrixType, _Mode >::PlainObject
template<typename _MatrixType, unsigned int _Mode>
typedef internal::traits<TriangularView>::Scalar TriangularView< _MatrixType, _Mode >::Scalar
template<typename _MatrixType, unsigned int _Mode>
typedef internal::traits<TriangularView>::StorageKind TriangularView< _MatrixType, _Mode >::StorageKind

Member Enumeration Documentation

template<typename _MatrixType, unsigned int _Mode>
anonymous enum
Enumerator:
Mode 
TransposeMode 

Constructor & Destructor Documentation

template<typename _MatrixType, unsigned int _Mode>
TriangularView< _MatrixType, _Mode >::TriangularView ( const MatrixType matrix  )  [inline]

Member Function Documentation

template<typename _MatrixType, unsigned int _Mode>
TriangularView<typename MatrixType::AdjointReturnType,TransposeMode> TriangularView< _MatrixType, _Mode >::adjoint (  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
const TriangularView<typename MatrixType::AdjointReturnType,TransposeMode> TriangularView< _MatrixType, _Mode >::adjoint (  )  const [inline]
template<typename _MatrixType, unsigned int _Mode>
template<typename ProductDerived , typename Lhs , typename Rhs >
EIGEN_STRONG_INLINE TriangularView& TriangularView< _MatrixType, _Mode >::assignProduct ( const ProductBase< ProductDerived, Lhs, Rhs > &  prod,
const Scalar alpha 
) [protected]
template<typename _MatrixType, unsigned int _Mode>
template<typename ProductDerived , typename _Lhs , typename _Rhs >
TriangularView<MatrixType,UpLo>& TriangularView< _MatrixType, _Mode >::assignProduct ( const ProductBase< ProductDerived, _Lhs, _Rhs > &  prod,
const Scalar alpha 
)
template<typename _MatrixType, unsigned int _Mode>
Scalar TriangularView< _MatrixType, _Mode >::coeff ( Index  row,
Index  col 
) const [inline]
See also:
MatrixBase::coeff()
Warning:
the coordinates must fit into the referenced triangular part
template<typename _MatrixType, unsigned int _Mode>
Scalar& TriangularView< _MatrixType, _Mode >::coeffRef ( Index  row,
Index  col 
) [inline]
See also:
MatrixBase::coeffRef()
Warning:
the coordinates must fit into the referenced triangular part
template<typename _MatrixType, unsigned int _Mode>
Index TriangularView< _MatrixType, _Mode >::cols ( void   )  const [inline]
Returns:
the number of columns.
See also:
rows(), ColsAtCompileTime

Reimplemented from TriangularBase< TriangularView< _MatrixType, _Mode > >.

template<typename _MatrixType, unsigned int _Mode>
TriangularView<MatrixConjugateReturnType,Mode> TriangularView< _MatrixType, _Mode >::conjugate (  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
const TriangularView<MatrixConjugateReturnType,Mode> TriangularView< _MatrixType, _Mode >::conjugate (  )  const [inline]
template<typename _MatrixType, unsigned int _Mode>
Scalar TriangularView< _MatrixType, _Mode >::determinant (  )  const [inline]
template<typename _MatrixType, unsigned int _Mode>
void TriangularView< _MatrixType, _Mode >::fill ( const Scalar value  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
Index TriangularView< _MatrixType, _Mode >::innerStride (  )  const [inline]
template<typename MatrixType , unsigned int Mode>
template<typename OtherDerived >
void TriangularView< MatrixType, Mode >::lazyAssign ( const MatrixBase< OtherDerived > &  other  ) 
template<typename MatrixType , unsigned int Mode>
template<typename OtherDerived >
void TriangularView< MatrixType, Mode >::lazyAssign ( const TriangularBase< OtherDerived > &  other  ) 
template<typename _MatrixType, unsigned int _Mode>
MatrixTypeNestedCleaned& TriangularView< _MatrixType, _Mode >::nestedExpression (  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
const MatrixTypeNestedCleaned& TriangularView< _MatrixType, _Mode >::nestedExpression (  )  const [inline]
template<typename _MatrixType, unsigned int _Mode>
template<typename OtherDerived >
TriangularProduct<Mode,true,MatrixType,false,OtherDerived,OtherDerived::IsVectorAtCompileTime> TriangularView< _MatrixType, _Mode >::operator* ( const MatrixBase< OtherDerived > &  rhs  )  const [inline]

Efficient triangular matrix times vector/matrix product

template<typename _MatrixType, unsigned int _Mode>
TriangularView& TriangularView< _MatrixType, _Mode >::operator*= ( const typename internal::traits< MatrixType >::Scalar other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
template<typename ProductDerived , typename Lhs , typename Rhs >
EIGEN_STRONG_INLINE TriangularView& TriangularView< _MatrixType, _Mode >::operator+= ( const ProductBase< ProductDerived, Lhs, Rhs > &  other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
template<typename Other >
TriangularView& TriangularView< _MatrixType, _Mode >::operator+= ( const DenseBase< Other > &  other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
template<typename ProductDerived >
EIGEN_STRONG_INLINE TriangularView& TriangularView< _MatrixType, _Mode >::operator+= ( const ScaledProduct< ProductDerived > &  other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
template<typename ProductDerived , typename Lhs , typename Rhs >
EIGEN_STRONG_INLINE TriangularView& TriangularView< _MatrixType, _Mode >::operator-= ( const ProductBase< ProductDerived, Lhs, Rhs > &  other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
template<typename ProductDerived >
EIGEN_STRONG_INLINE TriangularView& TriangularView< _MatrixType, _Mode >::operator-= ( const ScaledProduct< ProductDerived > &  other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
template<typename Other >
TriangularView& TriangularView< _MatrixType, _Mode >::operator-= ( const DenseBase< Other > &  other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
TriangularView& TriangularView< _MatrixType, _Mode >::operator/= ( const typename internal::traits< MatrixType >::Scalar other  )  [inline]
template<typename MatrixType , unsigned int Mode>
template<typename OtherDerived >
TriangularView< MatrixType, Mode > & TriangularView< MatrixType, Mode >::operator= ( const MatrixBase< OtherDerived > &  other  )  [inline]
template<typename MatrixType , unsigned int Mode>
template<typename OtherDerived >
TriangularView< MatrixType, Mode > & TriangularView< MatrixType, Mode >::operator= ( const TriangularBase< OtherDerived > &  other  )  [inline]

Assigns a triangular matrix to a triangular part of a dense matrix

template<typename _MatrixType, unsigned int _Mode>
template<typename ProductDerived , typename Lhs , typename Rhs >
EIGEN_STRONG_INLINE TriangularView& TriangularView< _MatrixType, _Mode >::operator= ( const ProductBase< ProductDerived, Lhs, Rhs > &  other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
TriangularView& TriangularView< _MatrixType, _Mode >::operator= ( const TriangularView< _MatrixType, _Mode > &  other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
template<typename ProductDerived >
EIGEN_STRONG_INLINE TriangularView& TriangularView< _MatrixType, _Mode >::operator= ( const ScaledProduct< ProductDerived > &  other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
Index TriangularView< _MatrixType, _Mode >::outerStride (  )  const [inline]
template<typename _MatrixType, unsigned int _Mode>
Index TriangularView< _MatrixType, _Mode >::rows ( void   )  const [inline]
Returns:
the number of rows.
See also:
cols(), RowsAtCompileTime

Reimplemented from TriangularBase< TriangularView< _MatrixType, _Mode > >.

template<typename _MatrixType, unsigned int _Mode>
const SelfAdjointView<MatrixTypeNestedNonRef,Mode> TriangularView< _MatrixType, _Mode >::selfadjointView (  )  const [inline]
template<typename _MatrixType, unsigned int _Mode>
SelfAdjointView<MatrixTypeNestedNonRef,Mode> TriangularView< _MatrixType, _Mode >::selfadjointView (  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
TriangularView& TriangularView< _MatrixType, _Mode >::setConstant ( const Scalar value  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
TriangularView& TriangularView< _MatrixType, _Mode >::setOnes (  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
TriangularView& TriangularView< _MatrixType, _Mode >::setZero (  )  [inline]
template<typename Derived , unsigned int Mode>
template<int Side, typename Other >
const internal::triangular_solve_retval< Side, TriangularView< Derived, Mode >, Other > TriangularView< Derived, Mode >::solve ( const MatrixBase< Other > &  other  )  const [inline]
Returns:
the product of the inverse of *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:

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.

See also:
TriangularView::solveInPlace()
template<typename _MatrixType, unsigned int _Mode>
template<typename Other >
const internal::triangular_solve_retval<OnTheLeft,TriangularView, Other> TriangularView< _MatrixType, _Mode >::solve ( const MatrixBase< Other > &  other  )  const [inline]
template<typename _MatrixType, unsigned int _Mode>
template<typename OtherDerived >
void TriangularView< _MatrixType, _Mode >::solveInPlace ( const MatrixBase< OtherDerived > &  other  )  const [inline]
template<typename MatrixType , unsigned int Mode>
template<int Side, typename OtherDerived >
void TriangularView< MatrixType, Mode >::solveInPlace ( const MatrixBase< OtherDerived > &  _other  )  const

"in-place" version of TriangularView::solve() where the result is written in other

Warning:
The parameter is only marked 'const' to make the C++ compiler accept a temporary expression here. This function will const_cast it, so constness isn't honored here.

See TriangularView:solve() for the details.

template<typename _MatrixType, unsigned int _Mode>
template<typename OtherDerived >
void TriangularView< _MatrixType, _Mode >::swap ( TriangularBase< OtherDerived > const &  other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
template<typename OtherDerived >
void TriangularView< _MatrixType, _Mode >::swap ( MatrixBase< OtherDerived > const &  other  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
TriangularView<Transpose<MatrixType>,TransposeMode> TriangularView< _MatrixType, _Mode >::transpose (  )  [inline]
template<typename _MatrixType, unsigned int _Mode>
const TriangularView<Transpose<MatrixType>,TransposeMode> TriangularView< _MatrixType, _Mode >::transpose (  )  const [inline]

Friends And Related Function Documentation

template<typename _MatrixType, unsigned int _Mode>
template<typename OtherDerived >
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


Member Data Documentation

template<typename _MatrixType, unsigned int _Mode>
const MatrixTypeNested TriangularView< _MatrixType, _Mode >::m_matrix [protected]

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