diff options
author | Gael Guennebaud <g.gael@free.fr> | 2010-08-23 23:38:35 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2010-08-23 23:38:35 +0200 |
commit | 6261f4629f7a41cff0095ab62eec0f97dd5d4cba (patch) | |
tree | 3e4405969ad6a77dc4d71145bf6fae0a56418b24 | |
parent | 474c2996bd7da42663bdc7696c2143f1ab1f1af5 (diff) |
add TriangularMatrix::conjugate to be consistent since we have adjoint
-rw-r--r-- | Eigen/src/Core/TriangularMatrix.h | 12 | ||||
-rw-r--r-- | test/triangular.cpp | 3 |
2 files changed, 15 insertions, 0 deletions
diff --git a/Eigen/src/Core/TriangularMatrix.h b/Eigen/src/Core/TriangularMatrix.h index e2afa23b0..cd1d4fd64 100644 --- a/Eigen/src/Core/TriangularMatrix.h +++ b/Eigen/src/Core/TriangularMatrix.h @@ -154,11 +154,17 @@ template<typename _MatrixType, unsigned int _Mode> class TriangularView typedef TriangularBase<TriangularView> Base; typedef typename ei_traits<TriangularView>::Scalar Scalar; + + protected: typedef _MatrixType MatrixType; typedef typename MatrixType::PlainObject DenseMatrixType; typedef typename MatrixType::Nested MatrixTypeNested; typedef typename ei_cleantype<MatrixTypeNested>::type _MatrixTypeNested; + typedef typename ei_cleantype<typename MatrixType::ConjugateReturnType>::type MatrixConjugateReturnType; + + public: using Base::evalToLazy; + typedef typename ei_traits<TriangularView>::StorageKind StorageKind; typedef typename ei_traits<TriangularView>::Index Index; @@ -235,6 +241,12 @@ template<typename _MatrixType, unsigned int _Mode> class TriangularView template<typename OtherDerived> void lazyAssign(const MatrixBase<OtherDerived>& other); + /** \sa MatrixBase::conjugate() */ + inline TriangularView<MatrixConjugateReturnType,Mode> conjugate() + { return m_matrix.conjugate(); } + /** \sa MatrixBase::conjugate() const */ + inline const TriangularView<MatrixConjugateReturnType,Mode> conjugate() const + { return m_matrix.conjugate(); } /** \sa MatrixBase::adjoint() */ inline TriangularView<typename MatrixType::AdjointReturnType,TransposeMode> adjoint() diff --git a/test/triangular.cpp b/test/triangular.cpp index 3436f18eb..bf5db4e27 100644 --- a/test/triangular.cpp +++ b/test/triangular.cpp @@ -83,6 +83,9 @@ template<typename MatrixType> void triangular_square(const MatrixType& m) m1.template triangularView<Lower>() = m2.transpose() + m2; VERIFY_IS_APPROX(m3.template triangularView<Lower>().toDenseMatrix(), m1); + VERIFY_IS_APPROX(m3.template triangularView<Lower>().conjugate().toDenseMatrix(), + m3.conjugate().template triangularView<Lower>().toDenseMatrix()); + m1 = MatrixType::Random(rows, cols); for (int i=0; i<rows; ++i) while (ei_abs2(m1(i,i))<1e-1) m1(i,i) = ei_random<Scalar>(); |