Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > Class Template Reference

A direct sparse LLT Cholesky factorizations, for symmetric non-hermitian matrices. More...

#include <SimplicialCholesky.h>

+ Inheritance diagram for Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >:

Public Types

enum  { UpLo = UpLo_ }
 
typedef MatrixType_ MatrixType
 
typedef SimplicialCholeskyBase< SimplicialNonHermitianLLTBase
 
typedef MatrixType::Scalar Scalar
 
typedef MatrixType::RealScalar RealScalar
 
typedef MatrixType::StorageIndex StorageIndex
 
typedef SparseMatrix< Scalar, ColMajor, StorageIndexCholMatrixType
 
typedef Matrix< Scalar, Dynamic, 1 > VectorType
 
typedef internal::traits< SimplicialNonHermitianLLTTraits
 
typedef Traits::MatrixL MatrixL
 
typedef Traits::MatrixU MatrixU
 
- Public Types inherited from Eigen::SimplicialCholeskyBase< SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > >
enum  
 
enum  
 
typedef internal::traits< SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > >::MatrixType MatrixType
 
typedef internal::traits< SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > >::OrderingType OrderingType
 
typedef MatrixType::Scalar Scalar
 
typedef MatrixType::RealScalar RealScalar
 
typedef internal::traits< SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > >::DiagonalScalar DiagonalScalar
 
typedef MatrixType::StorageIndex StorageIndex
 
typedef SparseMatrix< Scalar, ColMajor, StorageIndexCholMatrixType
 
typedef CholMatrixType const * ConstCholMatrixPtr
 
typedef Matrix< Scalar, Dynamic, 1 > VectorType
 
typedef Matrix< StorageIndex, Dynamic, 1 > VectorI
 

Public Member Functions

 SimplicialNonHermitianLLT ()
 
 SimplicialNonHermitianLLT (const MatrixType &matrix)
 
const MatrixL matrixL () const
 
const MatrixU matrixU () const
 
SimplicialNonHermitianLLTcompute (const MatrixType &matrix)
 
void analyzePattern (const MatrixType &a)
 
void factorize (const MatrixType &a)
 
Scalar determinant () const
 
- Public Member Functions inherited from Eigen::SimplicialCholeskyBase< SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > >
 SimplicialCholeskyBase ()
 
 SimplicialCholeskyBase (const MatrixType &matrix)
 
 ~SimplicialCholeskyBase ()
 
SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > & derived ()
 
const SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > & derived () const
 
SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > & derived ()
 
const SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > & derived () const
 
Index cols () const
 
Index rows () const
 
ComputationInfo info () const
 Reports whether previous computation was successful. More...
 
const PermutationMatrix< Dynamic, Dynamic, StorageIndex > & permutationP () const
 
const PermutationMatrix< Dynamic, Dynamic, StorageIndex > & permutationPinv () const
 
SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > & setShift (const DiagonalScalar &offset, const DiagonalScalar &scale=1)
 
void dumpMemory (Stream &s)
 
void _solve_impl (const MatrixBase< Rhs > &b, MatrixBase< Dest > &dest) const
 
void _solve_impl (const SparseMatrixBase< Rhs > &b, SparseMatrixBase< Dest > &dest) const
 
- Public Member Functions inherited from Eigen::SparseSolverBase< SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > >
 SparseSolverBase ()
 
 SparseSolverBase (SparseSolverBase &&other)
 
 ~SparseSolverBase ()
 
SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > & derived ()
 
const SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > & derived () const
 
const Solve< SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >, Rhs > solve (const MatrixBase< Rhs > &b) const
 
const Solve< SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >, Rhs > solve (const SparseMatrixBase< Rhs > &b) const
 
void _solve_impl (const SparseMatrixBase< Rhs > &b, SparseMatrixBase< Dest > &dest) const
 

Additional Inherited Members

- Protected Member Functions inherited from Eigen::SimplicialCholeskyBase< SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > >
void compute (const MatrixType &matrix)
 
void factorize (const MatrixType &a)
 
void factorize_preordered (const CholMatrixType &a)
 
void analyzePattern (const MatrixType &a)
 
void analyzePattern_preordered (const CholMatrixType &a, bool doLDLT)
 
void ordering (const MatrixType &a, ConstCholMatrixPtr &pmat, CholMatrixType &ap)
 
DiagonalScalar getDiag (Scalar x)
 
Scalar getSymm (Scalar x)
 
- Protected Attributes inherited from Eigen::SimplicialCholeskyBase< SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > >
ComputationInfo m_info
 
bool m_factorizationIsOk
 
bool m_analysisIsOk
 
CholMatrixType m_matrix
 
VectorType m_diag
 
VectorI m_parent
 
VectorI m_workSpace
 
PermutationMatrix< Dynamic, Dynamic, StorageIndexm_P
 
PermutationMatrix< Dynamic, Dynamic, StorageIndexm_Pinv
 
DiagonalScalar m_shiftOffset
 
DiagonalScalar m_shiftScale
 
- Protected Attributes inherited from Eigen::SparseSolverBase< SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ > >
bool m_isInitialized
 

Detailed Description

template<typename MatrixType_, int UpLo_, typename Ordering_>
class Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >

A direct sparse LLT Cholesky factorizations, for symmetric non-hermitian matrices.

This class provides a LL^T Cholesky factorizations of sparse matrices that are symmetric but not hermitian. For real matrices, this is equivalent to the regular LLT factorization. The factorization allows for solving A.X = B where X and B can be either dense or sparse.

In order to reduce the fill-in, a symmetric permutation P is applied prior to the factorization such that the factorized matrix is P A P^-1.

Template Parameters
MatrixType_the type of the sparse matrix A, it must be a SparseMatrix<>
UpLo_the triangular part that will be used for the computations. It can be Lower or Upper. Default is Lower.
Ordering_The ordering method to use, either AMDOrdering<> or NaturalOrdering<>. Default is AMDOrdering<>

\implsparsesolverconcept

See also
class SimplicialNonHermitianLDLT, SimplicialLLT, class AMDOrdering, class NaturalOrdering

Member Typedef Documentation

◆ Base

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
typedef SimplicialCholeskyBase<SimplicialNonHermitianLLT> Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::Base

◆ CholMatrixType

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
typedef SparseMatrix<Scalar, ColMajor, StorageIndex> Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::CholMatrixType

◆ MatrixL

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
typedef Traits::MatrixL Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::MatrixL

◆ MatrixType

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
typedef MatrixType_ Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::MatrixType

◆ MatrixU

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
typedef Traits::MatrixU Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::MatrixU

◆ RealScalar

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
typedef MatrixType::RealScalar Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::RealScalar

◆ Scalar

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
typedef MatrixType::Scalar Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::Scalar

◆ StorageIndex

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
typedef MatrixType::StorageIndex Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::StorageIndex

◆ Traits

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
typedef internal::traits<SimplicialNonHermitianLLT> Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::Traits

◆ VectorType

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
typedef Matrix<Scalar, Dynamic, 1> Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::VectorType

Member Enumeration Documentation

◆ anonymous enum

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
anonymous enum
Enumerator
UpLo 
542 { UpLo = UpLo_ };
@ UpLo
Definition: SimplicialCholesky.h:542

Constructor & Destructor Documentation

◆ SimplicialNonHermitianLLT() [1/2]

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::SimplicialNonHermitianLLT ( )
inline

Default constructor

555 : Base() {}
SimplicialCholeskyBase< SimplicialNonHermitianLLT > Base
Definition: SimplicialCholesky.h:543

◆ SimplicialNonHermitianLLT() [2/2]

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::SimplicialNonHermitianLLT ( const MatrixType matrix)
inlineexplicit

Constructs and performs the LLT factorization of matrix

558 : Base(matrix) {}
Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor >, 0, Eigen::OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition: common.h:85

Member Function Documentation

◆ analyzePattern()

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
void Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::analyzePattern ( const MatrixType a)
inline

Performs a symbolic decomposition on the sparcity of matrix.

This function is particularly useful when solving for several problems having the same structure.

See also
factorize()
584 { Base::template analyzePattern<false, true>(a); }
const Scalar * a
Definition: level2_cplx_impl.h:32

References a.

◆ compute()

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
SimplicialNonHermitianLLT& Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::compute ( const MatrixType matrix)
inline

Computes the sparse Cholesky decomposition of matrix

573  {
574  Base::template compute<false, true>(matrix);
575  return *this;
576  }

References matrix().

◆ determinant()

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
Scalar Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::determinant ( ) const
inline
Returns
the determinant of the underlying matrix from the current factorization
595  {
596  Scalar detL = Base::m_matrix.diagonal().prod();
597  return detL * detL;
598  }
SCALAR Scalar
Definition: bench_gemm.cpp:45
CholMatrixType m_matrix
Definition: SimplicialCholesky.h:240
const ConstDiagonalReturnType diagonal() const
Definition: SparseMatrix.h:757

References Eigen::SparseMatrix< Scalar_, Options_, StorageIndex_ >::diagonal(), and Eigen::SimplicialCholeskyBase< Derived >::m_matrix.

◆ factorize()

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
void Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::factorize ( const MatrixType a)
inline

Performs a numeric decomposition of matrix

The given matrix must has the same sparcity than the matrix on which the symbolic decomposition has been performed.

See also
analyzePattern()
592 { Base::template factorize<false, true>(a); }

References a.

◆ matrixL()

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
const MatrixL Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::matrixL ( ) const
inline
Returns
an expression of the factor L
561  {
562  eigen_assert(Base::m_factorizationIsOk && "Simplicial LLT not factorized");
563  return Traits::getL(Base::m_matrix);
564  }
#define eigen_assert(x)
Definition: Macros.h:910
bool m_factorizationIsOk
Definition: SimplicialCholesky.h:237

References eigen_assert, Eigen::SimplicialCholeskyBase< Derived >::m_factorizationIsOk, and Eigen::SimplicialCholeskyBase< Derived >::m_matrix.

◆ matrixU()

template<typename MatrixType_ , int UpLo_, typename Ordering_ >
const MatrixU Eigen::SimplicialNonHermitianLLT< MatrixType_, UpLo_, Ordering_ >::matrixU ( ) const
inline
Returns
an expression of the factor U (= L^*)
567  {
568  eigen_assert(Base::m_factorizationIsOk && "Simplicial LLT not factorized");
569  return Traits::getU(Base::m_matrix);
570  }

References eigen_assert, Eigen::SimplicialCholeskyBase< Derived >::m_factorizationIsOk, and Eigen::SimplicialCholeskyBase< Derived >::m_matrix.


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