mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Added Triangular expression to extract upper or lower (strictly or not)
part of a matrix. Triangular also provide an optimised method for forward and backward substitution. Further optimizations regarding assignments and products might come later. Updated determinant() to take into account triangular matrices. Started the QR module with a QR decompostion algorithm. Help needed to build a QR algorithm (eigen solver) based on it.
This commit is contained in:
@@ -71,7 +71,16 @@ template<typename Derived>
|
||||
typename ei_traits<Derived>::Scalar MatrixBase<Derived>::determinant() const
|
||||
{
|
||||
assert(rows() == cols());
|
||||
if(rows() <= 4) return ei_bruteforce_det(derived());
|
||||
if (Derived::Flags & (NullLowerBit | NullUpperBit))
|
||||
{
|
||||
if (Derived::Flags & UnitDiagBit)
|
||||
return 1;
|
||||
else if (Derived::Flags & NullDiagBit)
|
||||
return 0;
|
||||
else
|
||||
return derived().diagonal().redux(ei_scalar_product_op<Scalar>());
|
||||
}
|
||||
else if(rows() <= 4) return ei_bruteforce_det(derived());
|
||||
else assert(false); // unimplemented for now
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ template<typename MatrixType, bool CheckExistence> class Inverse : ei_no_assignm
|
||||
|
||||
protected:
|
||||
bool m_exists;
|
||||
typename MatrixType::Eval m_inverse;
|
||||
MatrixType m_inverse;
|
||||
};
|
||||
|
||||
template<typename MatrixType, bool CheckExistence>
|
||||
|
||||
Reference in New Issue
Block a user