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:
@@ -519,6 +519,22 @@ template<typename Derived> class MatrixBase
|
||||
{ return *static_cast<Derived*>(const_cast<MatrixBase*>(this)); }
|
||||
//@}
|
||||
|
||||
/// \name Triangular matrices
|
||||
//@{
|
||||
Triangular<Upper, Derived> upper(void);
|
||||
const Triangular<Upper, Derived> upper(void) const;
|
||||
const Triangular<Upper|UnitDiagBit, Derived> upperWithUnitDiag(void) const;
|
||||
const Triangular<Upper|NullDiagBit, Derived> upperWithNullDiag(void) const;
|
||||
|
||||
Triangular<Lower, Derived> lower(void);
|
||||
const Triangular<Lower, Derived> lower(void) const;
|
||||
const Triangular<Lower|UnitDiagBit, Derived> lowerWithUnitDiag(void) const;
|
||||
const Triangular<Lower|NullDiagBit, Derived> lowerWithNullDiag(void) const;
|
||||
|
||||
bool isUpper(RealScalar prec = precision<Scalar>()) const;
|
||||
bool isLower(RealScalar prec = precision<Scalar>()) const;
|
||||
//@}
|
||||
|
||||
/** \name LU module
|
||||
*
|
||||
* \code #include <Eigen/LU> \endcode
|
||||
@@ -529,6 +545,14 @@ template<typename Derived> class MatrixBase
|
||||
Scalar determinant() const;
|
||||
//@}
|
||||
|
||||
/** \name QR module
|
||||
*
|
||||
* \code #include <Eigen/QR> \endcode
|
||||
*/
|
||||
//@{
|
||||
const QR<typename ei_eval<Derived>::type> qr() const;
|
||||
//@}
|
||||
|
||||
private:
|
||||
|
||||
PacketScalar _packetCoeff(int , int) const { ei_internal_assert(false && "_packetCoeff not defined"); }
|
||||
|
||||
Reference in New Issue
Block a user