11#ifndef EIGEN_PARTIALLU_H
12#define EIGEN_PARTIALLU_H
30template<
typename T,
typename Derived>
36template<
typename T,
typename Derived>
77 :
public SolverBase<PartialPivLU<_MatrixType> >
117 template<
typename InputType>
127 template<
typename InputType>
130 template<
typename InputType>
157 #ifdef EIGEN_PARSED_BY_DOXYGEN
175 template<
typename Rhs>
222 #ifndef EIGEN_PARSED_BY_DOXYGEN
223 template<
typename RhsType,
typename DstType>
237 m_lu.template triangularView<UnitLower>().solveInPlace(dst);
240 m_lu.template triangularView<Upper>().solveInPlace(dst);
243 template<
bool Conjugate,
typename RhsType,
typename DstType>
256 dst =
m_lu.template triangularView<Upper>().transpose()
257 .template conjugateIf<Conjugate>().solve(rhs);
259 m_lu.template triangularView<UnitLower>().transpose()
260 .template conjugateIf<Conjugate>().solveInPlace(dst);
283template<
typename MatrixType>
287 m_rowsTranspositions(),
290 m_isInitialized(false)
294template<
typename MatrixType>
298 m_rowsTranspositions(
size),
301 m_isInitialized(false)
305template<
typename MatrixType>
306template<
typename InputType>
313 m_isInitialized(false)
318template<
typename MatrixType>
319template<
typename InputType>
326 m_isInitialized(false)
334template<
typename Scalar,
int StorageOrder,
typename PivIndex,
int SizeAtCompileTime=Dynamic>
361 typedef typename Scoring::result_type
Score;
504template<
typename MatrixType,
typename TranspositionType>
508 if (
lu.rows() == 0 ||
lu.cols() == 0) {
517 typename TranspositionType::StorageIndex,
524template<
typename MatrixType>
527 check_template_parameters();
533 m_l1_norm = m_lu.cwiseAbs().colwise().sum().maxCoeff();
537 eigen_assert(m_lu.rows() == m_lu.cols() &&
"PartialPivLU is only for square (and moreover invertible) matrices");
540 m_rowsTranspositions.resize(
size);
546 m_p = m_rowsTranspositions;
548 m_isInitialized =
true;
551template<
typename MatrixType>
554 eigen_assert(m_isInitialized &&
"PartialPivLU is not initialized.");
555 return Scalar(m_det_p) * m_lu.diagonal().prod();
561template<
typename MatrixType>
564 eigen_assert(m_isInitialized &&
"LU is not initialized.");
566 MatrixType res = m_lu.template triangularView<UnitLower>().toDenseMatrix()
567 * m_lu.template triangularView<Upper>();
570 res = m_p.inverse() *
res;
580template<
typename DstXprType,
typename MatrixType>
587 dst =
src.nestedExpression().solve(MatrixType::Identity(
src.rows(),
src.cols()));
600template<
typename Derived>
601inline const PartialPivLU<typename MatrixBase<Derived>::PlainObject>
615template<
typename Derived>
int i
Definition BiCGSTAB_step_by_step.cpp:9
#define EIGEN_GENERIC_PUBLIC_INTERFACE(Derived)
Definition Macros.h:1264
#define EIGEN_NOEXCEPT
Definition Macros.h:1418
#define EIGEN_CONSTEXPR
Definition Macros.h:787
#define EIGEN_DEVICE_FUNC
Definition Macros.h:976
#define eigen_assert(x)
Definition Macros.h:1037
#define EIGEN_SIZE_MIN_PREFER_FIXED(a, b)
Definition Macros.h:1302
cout<< "Here is the matrix m:"<< endl<< m<< endl;Matrix< ptrdiff_t, 3, 1 > res
Definition PartialRedux_count.cpp:3
#define EIGEN_STATIC_ASSERT_NON_INTEGER(TYPE)
Definition StaticAssert.h:187
int rows
Definition Tutorial_commainit_02.cpp:1
int cols
Definition Tutorial_commainit_02.cpp:1
Scalar * b
Definition benchVecAdd.cpp:17
Scalar Scalar int size
Definition benchVecAdd.cpp:17
SCALAR Scalar
Definition bench_gemm.cpp:46
NumTraits< Scalar >::Real RealScalar
Definition bench_gemm.cpp:47
MatrixXf MatrixType
Definition benchmark-blocking-sizes.cpp:52
Expression of the inverse of another expression.
Definition Inverse.h:44
Base class for all dense matrices, vectors, and expressions.
Definition MatrixBase.h:50
const PartialPivLU< PlainObject > partialPivLu() const
Definition PartialPivLU.h:602
const PartialPivLU< PlainObject > lu() const
Definition PartialPivLU.h:617
LU decomposition of a matrix with partial pivoting, and related features.
Definition PartialPivLU.h:78
_MatrixType MatrixType
Definition PartialPivLU.h:81
SolverBase< PartialPivLU > Base
Definition PartialPivLU.h:82
const Inverse< PartialPivLU > inverse() const
Definition PartialPivLU.h:196
RealScalar m_l1_norm
Definition PartialPivLU.h:278
const PermutationType & permutationP() const
Definition PartialPivLU.h:151
MatrixType m_lu
Definition PartialPivLU.h:275
RealScalar rcond() const
Definition PartialPivLU.h:183
PartialPivLU & compute(const EigenBase< InputType > &matrix)
Definition PartialPivLU.h:131
PartialPivLU(EigenBase< InputType > &matrix)
Definition PartialPivLU.h:320
Scalar determinant() const
Definition PartialPivLU.h:552
static void check_template_parameters()
Definition PartialPivLU.h:268
signed char m_det_p
Definition PartialPivLU.h:279
PermutationMatrix< RowsAtCompileTime, MaxRowsAtCompileTime > PermutationType
Definition PartialPivLU.h:90
PartialPivLU()
Default Constructor.
Definition PartialPivLU.h:284
EIGEN_DEVICE_FUNC void _solve_impl_transposed(const RhsType &rhs, DstType &dst) const
Definition PartialPivLU.h:245
const MatrixType & matrixLU() const
Definition PartialPivLU.h:143
@ MaxRowsAtCompileTime
Definition PartialPivLU.h:87
@ MaxColsAtCompileTime
Definition PartialPivLU.h:88
void compute()
Definition PartialPivLU.h:525
bool m_isInitialized
Definition PartialPivLU.h:280
TranspositionType m_rowsTranspositions
Definition PartialPivLU.h:277
MatrixType::PlainObject PlainObject
Definition PartialPivLU.h:92
EIGEN_DEVICE_FUNC void _solve_impl(const RhsType &rhs, DstType &dst) const
Definition PartialPivLU.h:225
MatrixType reconstructedMatrix() const
Definition PartialPivLU.h:562
EIGEN_CONSTEXPR Index cols() const EIGEN_NOEXCEPT
Definition PartialPivLU.h:220
Transpositions< RowsAtCompileTime, MaxRowsAtCompileTime > TranspositionType
Definition PartialPivLU.h:91
PartialPivLU(const EigenBase< InputType > &matrix)
Definition PartialPivLU.h:307
PartialPivLU(Index size)
Default Constructor with memory preallocation.
Definition PartialPivLU.h:295
EIGEN_CONSTEXPR Index rows() const EIGEN_NOEXCEPT
Definition PartialPivLU.h:219
PermutationType m_p
Definition PartialPivLU.h:276
InverseReturnType transpose() const
Definition PermutationMatrix.h:191
Permutation matrix.
Definition PermutationMatrix.h:298
A matrix or vector expression mapping an existing expression.
Definition Ref.h:283
Pseudo expression representing a solving operation.
Definition Solve.h:63
A base class for matrix decomposition and solvers.
Definition SolverBase.h:69
internal::traits< Derived >::Scalar Scalar
Definition SolverBase.h:73
const Solve< PartialPivLU< _MatrixType >, Rhs > solve(const MatrixBase< Rhs > &b) const
Definition SolverBase.h:106
EIGEN_DEVICE_FUNC Derived & derived()
Definition EigenBase.h:46
Represents a sequence of transpositions (row/column interchange)
Definition Transpositions.h:156
IndicesType::Scalar StorageIndex
Definition Transpositions.h:162
cout<< "Here is the matrix m:"<< endl<< m<< endl;Eigen::FullPivLU< Matrix5x3 > lu(m)
Map< Matrix< T, Dynamic, Dynamic, ColMajor >, 0, OuterStride<> > matrix(T *data, int rows, int cols, int stride)
Definition common.h:110
EIGEN_DONT_INLINE void compute(Solver &solver, const MatrixType &A)
Definition dense_solvers.cpp:25
@ ColMajor
Definition Constants.h:319
@ RowMajor
Definition Constants.h:321
const unsigned int RowMajorBit
Definition Constants.h:66
int nb_transpositions
Definition lu.cpp:30
DenseIndex ret
Definition level1_cplx_impl.h:44
void partial_lu_inplace(MatrixType &lu, TranspositionType &row_transpositions, typename TranspositionType::StorageIndex &nb_transpositions)
Definition PartialPivLU.h:505
Decomposition::RealScalar rcond_estimate_helper(typename Decomposition::RealScalar matrix_norm, const Decomposition &dec)
Reciprocal condition number estimator.
Definition ConditionEstimator.h:159
Namespace containing all symbols from the Eigen library.
Definition bench_norm.cpp:85
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition Meta.h:74
const int Dynamic
Definition Constants.h:22
Definition BandTriangularSolver.h:13
internal::nested_eval< T, 1 >::type eval(const T &xpr)
Definition sparse_permutations.cpp:38
Definition EigenBase.h:30
Eigen::Index Index
The interface type of indices.
Definition EigenBase.h:39
EIGEN_DEVICE_FUNC EIGEN_CONSTEXPR Index size() const EIGEN_NOEXCEPT
Definition EigenBase.h:67
Definition Constants.h:522
Holds information about the various numeric (i.e. scalar) types allowed by Eigen.
Definition NumTraits.h:233
Definition Constants.h:513
Inverse< LuType > SrcXprType
Definition PartialPivLU.h:584
PartialPivLU< MatrixType > LuType
Definition PartialPivLU.h:583
static void run(DstXprType &dst, const SrcXprType &src, const internal::assign_op< typename DstXprType::Scalar, typename LuType::Scalar > &)
Definition PartialPivLU.h:585
Definition AssignEvaluator.h:824
Definition AssignEvaluator.h:814
Definition AssignmentFunctors.h:21
Derived type
Definition PartialPivLU.h:38
Definition PartialPivLU.h:31
Definition PartialPivLU.h:336
static const bool UnBlockedAtCompileTime
Definition PartialPivLU.h:338
static const int ActualSizeAtCompileTime
Definition PartialPivLU.h:339
Matrix< Scalar, ActualSizeAtCompileTime, ActualSizeAtCompileTime, StorageOrder > MatrixType
Definition PartialPivLU.h:343
static Index blocked_lu(Index rows, Index cols, Scalar *lu_data, Index luStride, PivIndex *row_transpositions, PivIndex &nb_transpositions, Index maxBlockSize=256)
Definition PartialPivLU.h:430
Ref< Matrix< Scalar, Dynamic, Dynamic, StorageOrder > > BlockType
Definition PartialPivLU.h:345
static const int UnBlockedBound
Definition PartialPivLU.h:337
Ref< MatrixType > MatrixTypeRef
Definition PartialPivLU.h:344
static const int RCols
Definition PartialPivLU.h:342
static Index unblocked_lu(MatrixTypeRef &lu, PivIndex *row_transpositions, PivIndex &nb_transpositions)
Definition PartialPivLU.h:358
static const int RRows
Definition PartialPivLU.h:341
MatrixType::RealScalar RealScalar
Definition PartialPivLU.h:346
int StorageIndex
Definition PartialPivLU.h:22
SolverStorage StorageKind
Definition PartialPivLU.h:21
MatrixXpr XprKind
Definition PartialPivLU.h:20
traits< _MatrixType > BaseTraits
Definition PartialPivLU.h:23
Definition ForwardDeclarations.h:17