aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-08-23 23:38:35 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-08-23 23:38:35 +0200
commit6261f4629f7a41cff0095ab62eec0f97dd5d4cba (patch)
tree3e4405969ad6a77dc4d71145bf6fae0a56418b24
parent474c2996bd7da42663bdc7696c2143f1ab1f1af5 (diff)
add TriangularMatrix::conjugate to be consistent since we have adjoint
-rw-r--r--Eigen/src/Core/TriangularMatrix.h12
-rw-r--r--test/triangular.cpp3
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>();