WPILibC++ 2023.4.3-108-ge5452e3
Eigen::LDLT< _MatrixType, _UpLo > Class Template Reference

Robust Cholesky decomposition of a matrix with pivoting. More...

#include </home/runner/work/allwpilib/allwpilib/wpimath/src/main/native/thirdparty/eigen/include/Eigen/src/Cholesky/LDLT.h>

Inheritance diagram for Eigen::LDLT< _MatrixType, _UpLo >:
Eigen::SolverBase< LDLT< _MatrixType, _UpLo > > Eigen::EigenBase< LDLT< _MatrixType, _UpLo > >

Public Types

enum  { MaxRowsAtCompileTime = MatrixType::MaxRowsAtCompileTime , MaxColsAtCompileTime = MatrixType::MaxColsAtCompileTime , UpLo = _UpLo }
 
typedef _MatrixType MatrixType
 
typedef SolverBase< LDLTBase
 
typedef Matrix< Scalar, RowsAtCompileTime, 1, 0, MaxRowsAtCompileTime, 1 > TmpMatrixType
 
typedef Transpositions< RowsAtCompileTime, MaxRowsAtCompileTimeTranspositionType
 
typedef PermutationMatrix< RowsAtCompileTime, MaxRowsAtCompileTimePermutationType
 
typedef internal::LDLT_Traits< MatrixType, UpLoTraits
 
- Public Types inherited from Eigen::SolverBase< LDLT< _MatrixType, _UpLo > >
enum  
 
typedef EigenBase< LDLT< _MatrixType, _UpLo > > Base
 
typedef internal::traits< LDLT< _MatrixType, _UpLo > >::Scalar Scalar
 
typedef Scalar CoeffReturnType
 
typedef internal::add_const< Transpose< constDerived > >::type ConstTransposeReturnType
 
typedef internal::conditional< NumTraits< Scalar >::IsComplex, CwiseUnaryOp< internal::scalar_conjugate_op< Scalar >, ConstTransposeReturnType >, ConstTransposeReturnType >::type AdjointReturnType
 
- Public Types inherited from Eigen::EigenBase< LDLT< _MatrixType, _UpLo > >
typedef Eigen::Index Index
 The interface type of indices. More...
 
typedef internal::traits< LDLT< _MatrixType, _UpLo > >::StorageKind StorageKind
 

Public Member Functions

 LDLT ()
 Default Constructor. More...
 
 LDLT (Index size)
 Default Constructor with memory preallocation. More...
 
template<typename InputType >
 LDLT (const EigenBase< InputType > &matrix)
 Constructor with decomposition. More...
 
template<typename InputType >
 LDLT (EigenBase< InputType > &matrix)
 Constructs a LDLT factorization from a given matrix. More...
 
void setZero ()
 Clear any existing decomposition. More...
 
Traits::MatrixU matrixU () const
 
Traits::MatrixL matrixL () const
 
const TranspositionTypetranspositionsP () const
 
Diagonal< const MatrixTypevectorD () const
 
bool isPositive () const
 
bool isNegative (void) const
 
template<typename Derived >
bool solveInPlace (MatrixBase< Derived > &bAndX) const
 
template<typename InputType >
LDLTcompute (const EigenBase< InputType > &matrix)
 
RealScalar rcond () const
 
template<typename Derived >
LDLTrankUpdate (const MatrixBase< Derived > &w, const RealScalar &alpha=1)
 
const MatrixTypematrixLDLT () const
 
MatrixType reconstructedMatrix () const
 
const LDLTadjoint () const
 
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows () const EIGEN_NOEXCEPT
 
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols () const EIGEN_NOEXCEPT
 
ComputationInfo info () const
 Reports whether previous computation was successful. More...
 
template<typename RhsType , typename DstType >
void _solve_impl (const RhsType &rhs, DstType &dst) const
 
template<bool Conjugate, typename RhsType , typename DstType >
void _solve_impl_transposed (const RhsType &rhs, DstType &dst) const
 
template<typename InputType >
LDLT< MatrixType, _UpLo > & compute (const EigenBase< InputType > &a)
 Compute / recompute the LDLT decomposition A = L D L^* = U^* D U of matrix. More...
 
template<typename Derived >
LDLT< MatrixType, _UpLo > & rankUpdate (const MatrixBase< Derived > &w, const typename LDLT< MatrixType, _UpLo >::RealScalar &sigma)
 Update the LDLT decomposition: given A = L D L^T, efficiently compute the decomposition of A + sigma w w^T. More...
 
- Public Member Functions inherited from Eigen::SolverBase< LDLT< _MatrixType, _UpLo > >
 SolverBase ()
 Default constructor. More...
 
 ~SolverBase ()
 
const Solve< LDLT< _MatrixType, _UpLo >, Rhs > solve (const MatrixBase< Rhs > &b) const
 
ConstTransposeReturnType transpose () const
 
AdjointReturnType adjoint () const
 
EIGEN_DEVICE_FUNC LDLT< _MatrixType, _UpLo > & derived ()
 
EIGEN_DEVICE_FUNC const LDLT< _MatrixType, _UpLo > & derived () const
 
- Public Member Functions inherited from Eigen::EigenBase< LDLT< _MatrixType, _UpLo > >
EIGEN_DEVICE_FUNC LDLT< _MatrixType, _UpLo > & derived ()
 
EIGEN_DEVICE_FUNC const LDLT< _MatrixType, _UpLo > & derived () const
 
EIGEN_DEVICE_FUNC LDLT< _MatrixType, _UpLo > & const_cast_derived () const
 
EIGEN_DEVICE_FUNC const LDLT< _MatrixType, _UpLo > & const_derived () const
 
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index rows () const EIGEN_NOEXCEPT
 
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index cols () const EIGEN_NOEXCEPT
 
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index size () const EIGEN_NOEXCEPT
 
EIGEN_DEVICE_FUNC void evalTo (Dest &dst) const
 
EIGEN_DEVICE_FUNC void addTo (Dest &dst) const
 
EIGEN_DEVICE_FUNC void subTo (Dest &dst) const
 
EIGEN_DEVICE_FUNC void applyThisOnTheRight (Dest &dst) const
 
EIGEN_DEVICE_FUNC void applyThisOnTheLeft (Dest &dst) const
 

Static Protected Member Functions

static void check_template_parameters ()
 

Protected Attributes

MatrixType m_matrix
 
RealScalar m_l1_norm
 
TranspositionType m_transpositions
 
TmpMatrixType m_temporary
 
internal::SignMatrix m_sign
 
bool m_isInitialized
 
ComputationInfo m_info
 

Friends

class SolverBase< LDLT >
 

Additional Inherited Members

- Protected Member Functions inherited from Eigen::SolverBase< LDLT< _MatrixType, _UpLo > >
void _check_solve_assertion (const Rhs &b) const
 

Detailed Description

template<typename _MatrixType, int _UpLo>
class Eigen::LDLT< _MatrixType, _UpLo >

Robust Cholesky decomposition of a matrix with pivoting.

Template Parameters
_MatrixTypethe type of the matrix of which to compute the LDL^T Cholesky decomposition
_UpLothe triangular part that will be used for the decompositon: Lower (default) or Upper. The other triangular part won't be read.

Perform a robust Cholesky decomposition of a positive semidefinite or negative semidefinite matrix \( A \) such that \( A = P^TLDL^*P \), where P is a permutation matrix, L is lower triangular with a unit diagonal and D is a diagonal matrix.

The decomposition uses pivoting to ensure stability, so that D will have zeros in the bottom right rank(A) - n submatrix. Avoiding the square root on D also stabilizes the computation.

Remember that Cholesky decompositions are not rank-revealing. Also, do not use a Cholesky decomposition to determine whether a system of equations has a solution.

This class supports the inplace decomposition mechanism.

See also
MatrixBase::ldlt(), SelfAdjointView::ldlt(), class LLT

Member Typedef Documentation

◆ Base

template<typename _MatrixType , int _UpLo>
typedef SolverBase<LDLT> Eigen::LDLT< _MatrixType, _UpLo >::Base

◆ MatrixType

template<typename _MatrixType , int _UpLo>
typedef _MatrixType Eigen::LDLT< _MatrixType, _UpLo >::MatrixType

◆ PermutationType

template<typename _MatrixType , int _UpLo>
typedef PermutationMatrix<RowsAtCompileTime, MaxRowsAtCompileTime> Eigen::LDLT< _MatrixType, _UpLo >::PermutationType

◆ TmpMatrixType

template<typename _MatrixType , int _UpLo>
typedef Matrix<Scalar, RowsAtCompileTime, 1, 0, MaxRowsAtCompileTime, 1> Eigen::LDLT< _MatrixType, _UpLo >::TmpMatrixType

◆ Traits

template<typename _MatrixType , int _UpLo>
typedef internal::LDLT_Traits<MatrixType,UpLo> Eigen::LDLT< _MatrixType, _UpLo >::Traits

◆ TranspositionType

template<typename _MatrixType , int _UpLo>
typedef Transpositions<RowsAtCompileTime, MaxRowsAtCompileTime> Eigen::LDLT< _MatrixType, _UpLo >::TranspositionType

Member Enumeration Documentation

◆ anonymous enum

template<typename _MatrixType , int _UpLo>
anonymous enum
Enumerator
MaxRowsAtCompileTime 
MaxColsAtCompileTime 
UpLo 

Constructor & Destructor Documentation

◆ LDLT() [1/4]

template<typename _MatrixType , int _UpLo>
Eigen::LDLT< _MatrixType, _UpLo >::LDLT ( )
inline

Default Constructor.

The default constructor is useful in cases in which the user intends to perform decompositions via LDLT::compute(const MatrixType&).

◆ LDLT() [2/4]

template<typename _MatrixType , int _UpLo>
Eigen::LDLT< _MatrixType, _UpLo >::LDLT ( Index  size)
inlineexplicit

Default Constructor with memory preallocation.

Like the default constructor but with preallocation of the internal data according to the specified problem size.

See also
LDLT()

◆ LDLT() [3/4]

template<typename _MatrixType , int _UpLo>
template<typename InputType >
Eigen::LDLT< _MatrixType, _UpLo >::LDLT ( const EigenBase< InputType > &  matrix)
inlineexplicit

Constructor with decomposition.

This calculates the decomposition for the input matrix.

See also
LDLT(Index size)

◆ LDLT() [4/4]

template<typename _MatrixType , int _UpLo>
template<typename InputType >
Eigen::LDLT< _MatrixType, _UpLo >::LDLT ( EigenBase< InputType > &  matrix)
inlineexplicit

Constructs a LDLT factorization from a given matrix.

This overloaded constructor is provided for inplace decomposition when MatrixType is a Eigen::Ref.

See also
LDLT(const EigenBase&)

Member Function Documentation

◆ _solve_impl()

template<typename _MatrixType , int _UpLo>
template<typename RhsType , typename DstType >
void Eigen::LDLT< _MatrixType, _UpLo >::_solve_impl ( const RhsType &  rhs,
DstType &  dst 
) const

◆ _solve_impl_transposed()

template<typename _MatrixType , int _UpLo>
template<bool Conjugate, typename RhsType , typename DstType >
void Eigen::LDLT< _MatrixType, _UpLo >::_solve_impl_transposed ( const RhsType &  rhs,
DstType &  dst 
) const

◆ adjoint()

template<typename _MatrixType , int _UpLo>
const LDLT & Eigen::LDLT< _MatrixType, _UpLo >::adjoint ( ) const
inline
Returns
the adjoint of *this, that is, a const reference to the decomposition itself as the underlying matrix is self-adjoint.

This method is provided for compatibility with other matrix decompositions, thus enabling generic code such as:

x = decomposition.adjoint().solve(b)
b
Definition: data.h:44

◆ check_template_parameters()

template<typename _MatrixType , int _UpLo>
static void Eigen::LDLT< _MatrixType, _UpLo >::check_template_parameters ( )
inlinestaticprotected

◆ cols()

template<typename _MatrixType , int _UpLo>
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index Eigen::LDLT< _MatrixType, _UpLo >::cols ( ) const
inline

◆ compute() [1/2]

template<typename _MatrixType , int _UpLo>
template<typename InputType >
LDLT< MatrixType, _UpLo > & Eigen::LDLT< _MatrixType, _UpLo >::compute ( const EigenBase< InputType > &  a)

Compute / recompute the LDLT decomposition A = L D L^* = U^* D U of matrix.

◆ compute() [2/2]

template<typename _MatrixType , int _UpLo>
template<typename InputType >
LDLT & Eigen::LDLT< _MatrixType, _UpLo >::compute ( const EigenBase< InputType > &  matrix)

◆ info()

template<typename _MatrixType , int _UpLo>
ComputationInfo Eigen::LDLT< _MatrixType, _UpLo >::info ( ) const
inline

Reports whether previous computation was successful.

Returns
Success if computation was successful, NumericalIssue if the factorization failed because of a zero pivot.

◆ isNegative()

template<typename _MatrixType , int _UpLo>
bool Eigen::LDLT< _MatrixType, _UpLo >::isNegative ( void  ) const
inline
Returns
true if the matrix is negative (semidefinite)

◆ isPositive()

template<typename _MatrixType , int _UpLo>
bool Eigen::LDLT< _MatrixType, _UpLo >::isPositive ( ) const
inline
Returns
true if the matrix is positive (semidefinite)

◆ matrixL()

template<typename _MatrixType , int _UpLo>
Traits::MatrixL Eigen::LDLT< _MatrixType, _UpLo >::matrixL ( ) const
inline
Returns
a view of the lower triangular matrix L

◆ matrixLDLT()

template<typename _MatrixType , int _UpLo>
const MatrixType & Eigen::LDLT< _MatrixType, _UpLo >::matrixLDLT ( ) const
inline
Returns
the internal LDLT decomposition matrix

TODO: document the storage layout

◆ matrixU()

template<typename _MatrixType , int _UpLo>
Traits::MatrixU Eigen::LDLT< _MatrixType, _UpLo >::matrixU ( ) const
inline
Returns
a view of the upper triangular matrix U

◆ rankUpdate() [1/2]

template<typename _MatrixType , int _UpLo>
template<typename Derived >
LDLT & Eigen::LDLT< _MatrixType, _UpLo >::rankUpdate ( const MatrixBase< Derived > &  w,
const RealScalar &  alpha = 1 
)

◆ rankUpdate() [2/2]

template<typename _MatrixType , int _UpLo>
template<typename Derived >
LDLT< MatrixType, _UpLo > & Eigen::LDLT< _MatrixType, _UpLo >::rankUpdate ( const MatrixBase< Derived > &  w,
const typename LDLT< MatrixType, _UpLo >::RealScalar &  sigma 
)

Update the LDLT decomposition: given A = L D L^T, efficiently compute the decomposition of A + sigma w w^T.

Parameters
wa vector to be incorporated into the decomposition.
sigmaa scalar, +1 for updates and -1 for "downdates," which correspond to removing previously-added column vectors. Optional; default value is +1.
See also
setZero()

◆ rcond()

template<typename _MatrixType , int _UpLo>
RealScalar Eigen::LDLT< _MatrixType, _UpLo >::rcond ( ) const
inline
Returns
an estimate of the reciprocal condition number of the matrix of which *this is the LDLT decomposition.

◆ reconstructedMatrix()

template<typename MatrixType , int _UpLo>
MatrixType Eigen::LDLT< MatrixType, _UpLo >::reconstructedMatrix
Returns
the matrix represented by the decomposition, i.e., it returns the product: P^T L D L^* P. This function is provided for debug purpose.

◆ rows()

template<typename _MatrixType , int _UpLo>
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index Eigen::LDLT< _MatrixType, _UpLo >::rows ( ) const
inline

◆ setZero()

template<typename _MatrixType , int _UpLo>
void Eigen::LDLT< _MatrixType, _UpLo >::setZero ( )
inline

Clear any existing decomposition.

See also
rankUpdate(w,sigma)

◆ solveInPlace()

template<typename MatrixType , int _UpLo>
template<typename Derived >
bool Eigen::LDLT< MatrixType, _UpLo >::solveInPlace ( MatrixBase< Derived > &  bAndX) const

◆ transpositionsP()

template<typename _MatrixType , int _UpLo>
const TranspositionType & Eigen::LDLT< _MatrixType, _UpLo >::transpositionsP ( ) const
inline
Returns
the permutation matrix P as a transposition sequence.

◆ vectorD()

template<typename _MatrixType , int _UpLo>
Diagonal< const MatrixType > Eigen::LDLT< _MatrixType, _UpLo >::vectorD ( ) const
inline
Returns
the coefficients of the diagonal matrix D

Friends And Related Function Documentation

◆ SolverBase< LDLT >

template<typename _MatrixType , int _UpLo>
friend class SolverBase< LDLT >
friend

Member Data Documentation

◆ m_info

template<typename _MatrixType , int _UpLo>
ComputationInfo Eigen::LDLT< _MatrixType, _UpLo >::m_info
protected

◆ m_isInitialized

template<typename _MatrixType , int _UpLo>
bool Eigen::LDLT< _MatrixType, _UpLo >::m_isInitialized
protected

◆ m_l1_norm

template<typename _MatrixType , int _UpLo>
RealScalar Eigen::LDLT< _MatrixType, _UpLo >::m_l1_norm
protected

◆ m_matrix

template<typename _MatrixType , int _UpLo>
MatrixType Eigen::LDLT< _MatrixType, _UpLo >::m_matrix
protected

◆ m_sign

template<typename _MatrixType , int _UpLo>
internal::SignMatrix Eigen::LDLT< _MatrixType, _UpLo >::m_sign
protected

◆ m_temporary

template<typename _MatrixType , int _UpLo>
TmpMatrixType Eigen::LDLT< _MatrixType, _UpLo >::m_temporary
protected

◆ m_transpositions

template<typename _MatrixType , int _UpLo>
TranspositionType Eigen::LDLT< _MatrixType, _UpLo >::m_transpositions
protected

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