aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2010-01-07 21:15:32 +0100
committerGravatar Gael Guennebaud <g.gael@free.fr>2010-01-07 21:15:32 +0100
commitc5d7c9f0def693e77797e6e43cb1fd2e7f8ae2fd (patch)
tree3a6367ee5d64f9e9034831a84d2b4cf3c761263c /test
parent82ec250a0f9abc11be71e8d0f92dc6f7284b91d0 (diff)
remove the Triangular suffix to Upper, Lower, UnitLower, etc,
and remove the respective bit flags
Diffstat (limited to 'test')
-rw-r--r--test/bandmatrix.cpp4
-rw-r--r--test/cholesky.cpp10
-rw-r--r--test/product_notemporary.cpp32
-rw-r--r--test/product_selfadjoint.cpp24
-rw-r--r--test/product_symm.cpp38
-rw-r--r--test/product_syrk.cpp24
-rw-r--r--test/product_trmm.cpp36
-rw-r--r--test/product_trmv.cpp50
-rw-r--r--test/product_trsolve.cpp32
-rw-r--r--test/qr_colpivoting.cpp4
-rw-r--r--test/sparse_product.cpp6
-rw-r--r--test/sparse_solvers.cpp41
-rw-r--r--test/triangular.cpp130
13 files changed, 215 insertions, 216 deletions
diff --git a/test/bandmatrix.cpp b/test/bandmatrix.cpp
index e243dffe5..dc54812b9 100644
--- a/test/bandmatrix.cpp
+++ b/test/bandmatrix.cpp
@@ -64,8 +64,8 @@ template<typename MatrixType> void bandmatrix(const MatrixType& _m)
int a = std::max(0,cols-d-supers);
int b = std::max(0,rows-d-subs);
if(a>0) dm1.block(0,d+supers,rows,a).setZero();
- dm1.block(0,supers+1,cols-supers-1-a,cols-supers-1-a).template triangularView<UpperTriangular>().setZero();
- dm1.block(subs+1,0,rows-subs-1-b,rows-subs-1-b).template triangularView<LowerTriangular>().setZero();
+ dm1.block(0,supers+1,cols-supers-1-a,cols-supers-1-a).template triangularView<Upper>().setZero();
+ dm1.block(subs+1,0,rows-subs-1-b,rows-subs-1-b).template triangularView<Lower>().setZero();
if(b>0) dm1.block(d+subs,0,b,cols).setZero();
//std::cerr << m.m_data << "\n\n" << m.toDense() << "\n\n" << dm1 << "\n\n";
VERIFY_IS_APPROX(dm1,m.toDenseMatrix());
diff --git a/test/cholesky.cpp b/test/cholesky.cpp
index c658b902c..1bb808d20 100644
--- a/test/cholesky.cpp
+++ b/test/cholesky.cpp
@@ -58,12 +58,12 @@ template<typename MatrixType> void cholesky(const MatrixType& m)
symm += a1 * a1.adjoint();
}
- SquareMatrixType symmUp = symm.template triangularView<UpperTriangular>();
- SquareMatrixType symmLo = symm.template triangularView<LowerTriangular>();
+ SquareMatrixType symmUp = symm.template triangularView<Upper>();
+ SquareMatrixType symmLo = symm.template triangularView<Lower>();
// to test if really Cholesky only uses the upper triangular part, uncomment the following
// FIXME: currently that fails !!
- //symm.template part<StrictlyLowerTriangular>().setZero();
+ //symm.template part<StrictlyLower>().setZero();
#ifdef HAS_GSL
// if (ei_is_same_type<RealScalar,double>::ret)
@@ -94,7 +94,7 @@ template<typename MatrixType> void cholesky(const MatrixType& m)
#endif
{
- LLT<SquareMatrixType,LowerTriangular> chollo(symmLo);
+ LLT<SquareMatrixType,Lower> chollo(symmLo);
VERIFY_IS_APPROX(symm, chollo.matrixL().toDenseMatrix() * chollo.matrixL().adjoint().toDenseMatrix());
vecX = chollo.solve(vecB);
VERIFY_IS_APPROX(symm * vecX, vecB);
@@ -102,7 +102,7 @@ template<typename MatrixType> void cholesky(const MatrixType& m)
VERIFY_IS_APPROX(symm * matX, matB);
// test the upper mode
- LLT<SquareMatrixType,UpperTriangular> cholup(symmUp);
+ LLT<SquareMatrixType,Upper> cholup(symmUp);
VERIFY_IS_APPROX(symm, cholup.matrixL().toDenseMatrix() * cholup.matrixL().adjoint().toDenseMatrix());
vecX = cholup.solve(vecB);
VERIFY_IS_APPROX(symm * vecX, vecB);
diff --git a/test/product_notemporary.cpp b/test/product_notemporary.cpp
index 534d23d84..1da91e5d7 100644
--- a/test/product_notemporary.cpp
+++ b/test/product_notemporary.cpp
@@ -85,31 +85,31 @@ template<typename MatrixType> void product_notemporary(const MatrixType& m)
// NOTE this is because the Block expression is not handled yet by our expression analyser
VERIFY_EVALUATION_COUNT(( m3.block(r0,r0,r1,r1).noalias() = s1 * m1.block(r0,c0,r1,c1) * (s1*m2).block(c0,r0,c1,r1) ), 1);
- VERIFY_EVALUATION_COUNT( m3.noalias() -= (s1 * m1).template triangularView<LowerTriangular>() * m2, 0);
- VERIFY_EVALUATION_COUNT( rm3.noalias() = (s1 * m1.adjoint()).template triangularView<UpperTriangular>() * (m2+m2), 1);
- VERIFY_EVALUATION_COUNT( rm3.noalias() = (s1 * m1.adjoint()).template triangularView<UnitUpperTriangular>() * m2.adjoint(), 0);
+ VERIFY_EVALUATION_COUNT( m3.noalias() -= (s1 * m1).template triangularView<Lower>() * m2, 0);
+ VERIFY_EVALUATION_COUNT( rm3.noalias() = (s1 * m1.adjoint()).template triangularView<Upper>() * (m2+m2), 1);
+ VERIFY_EVALUATION_COUNT( rm3.noalias() = (s1 * m1.adjoint()).template triangularView<UnitUpper>() * m2.adjoint(), 0);
- VERIFY_EVALUATION_COUNT( rm3.col(c0).noalias() = (s1 * m1.adjoint()).template triangularView<UnitUpperTriangular>() * (s2*m2.row(c0)).adjoint(), 0);
+ VERIFY_EVALUATION_COUNT( rm3.col(c0).noalias() = (s1 * m1.adjoint()).template triangularView<UnitUpper>() * (s2*m2.row(c0)).adjoint(), 0);
- VERIFY_EVALUATION_COUNT( m1.template triangularView<LowerTriangular>().solveInPlace(m3), 0);
- VERIFY_EVALUATION_COUNT( m1.adjoint().template triangularView<LowerTriangular>().solveInPlace(m3.transpose()), 0);
+ VERIFY_EVALUATION_COUNT( m1.template triangularView<Lower>().solveInPlace(m3), 0);
+ VERIFY_EVALUATION_COUNT( m1.adjoint().template triangularView<Lower>().solveInPlace(m3.transpose()), 0);
- VERIFY_EVALUATION_COUNT( m3.noalias() -= (s1 * m1).adjoint().template selfadjointView<LowerTriangular>() * (-m2*s3).adjoint(), 0);
- VERIFY_EVALUATION_COUNT( m3.noalias() = s2 * m2.adjoint() * (s1 * m1.adjoint()).template selfadjointView<UpperTriangular>(), 0);
- VERIFY_EVALUATION_COUNT( rm3.noalias() = (s1 * m1.adjoint()).template selfadjointView<LowerTriangular>() * m2.adjoint(), 0);
+ VERIFY_EVALUATION_COUNT( m3.noalias() -= (s1 * m1).adjoint().template selfadjointView<Lower>() * (-m2*s3).adjoint(), 0);
+ VERIFY_EVALUATION_COUNT( m3.noalias() = s2 * m2.adjoint() * (s1 * m1.adjoint()).template selfadjointView<Upper>(), 0);
+ VERIFY_EVALUATION_COUNT( rm3.noalias() = (s1 * m1.adjoint()).template selfadjointView<Lower>() * m2.adjoint(), 0);
- VERIFY_EVALUATION_COUNT( m3.col(c0).noalias() = (s1 * m1).adjoint().template selfadjointView<LowerTriangular>() * (-m2.row(c0)*s3).adjoint(), 0);
- VERIFY_EVALUATION_COUNT( m3.col(c0).noalias() -= (s1 * m1).adjoint().template selfadjointView<UpperTriangular>() * (-m2.row(c0)*s3).adjoint(), 0);
+ VERIFY_EVALUATION_COUNT( m3.col(c0).noalias() = (s1 * m1).adjoint().template selfadjointView<Lower>() * (-m2.row(c0)*s3).adjoint(), 0);
+ VERIFY_EVALUATION_COUNT( m3.col(c0).noalias() -= (s1 * m1).adjoint().template selfadjointView<Upper>() * (-m2.row(c0)*s3).adjoint(), 0);
- VERIFY_EVALUATION_COUNT( m3.block(r0,c0,r1,c1).noalias() += m1.block(r0,r0,r1,r1).template selfadjointView<UpperTriangular>() * (s1*m2.block(r0,c0,r1,c1)), 0);
- VERIFY_EVALUATION_COUNT( m3.block(r0,c0,r1,c1).noalias() = m1.block(r0,r0,r1,r1).template selfadjointView<UpperTriangular>() * m2.block(r0,c0,r1,c1), 0);
+ VERIFY_EVALUATION_COUNT( m3.block(r0,c0,r1,c1).noalias() += m1.block(r0,r0,r1,r1).template selfadjointView<Upper>() * (s1*m2.block(r0,c0,r1,c1)), 0);
+ VERIFY_EVALUATION_COUNT( m3.block(r0,c0,r1,c1).noalias() = m1.block(r0,r0,r1,r1).template selfadjointView<Upper>() * m2.block(r0,c0,r1,c1), 0);
- VERIFY_EVALUATION_COUNT( m3.template selfadjointView<LowerTriangular>().rankUpdate(m2.adjoint()), 0);
+ VERIFY_EVALUATION_COUNT( m3.template selfadjointView<Lower>().rankUpdate(m2.adjoint()), 0);
m3.resize(1,1);
- VERIFY_EVALUATION_COUNT( m3.noalias() = m1.block(r0,r0,r1,r1).template selfadjointView<LowerTriangular>() * m2.block(r0,c0,r1,c1), 0);
+ VERIFY_EVALUATION_COUNT( m3.noalias() = m1.block(r0,r0,r1,r1).template selfadjointView<Lower>() * m2.block(r0,c0,r1,c1), 0);
m3.resize(1,1);
- VERIFY_EVALUATION_COUNT( m3.noalias() = m1.block(r0,r0,r1,r1).template triangularView<UnitUpperTriangular>() * m2.block(r0,c0,r1,c1), 0);
+ VERIFY_EVALUATION_COUNT( m3.noalias() = m1.block(r0,r0,r1,r1).template triangularView<UnitUpper>() * m2.block(r0,c0,r1,c1), 0);
}
void test_product_notemporary()
diff --git a/test/product_selfadjoint.cpp b/test/product_selfadjoint.cpp
index 2f3833a02..2027fc8e5 100644
--- a/test/product_selfadjoint.cpp
+++ b/test/product_selfadjoint.cpp
@@ -53,25 +53,25 @@ template<typename MatrixType> void product_selfadjoint(const MatrixType& m)
m1 = (m1.adjoint() + m1).eval();
// rank2 update
- m2 = m1.template triangularView<LowerTriangular>();
- m2.template selfadjointView<LowerTriangular>().rankUpdate(v1,v2);
- VERIFY_IS_APPROX(m2, (m1 + v1 * v2.adjoint()+ v2 * v1.adjoint()).template triangularView<LowerTriangular>().toDenseMatrix());
+ m2 = m1.template triangularView<Lower>();
+ m2.template selfadjointView<Lower>().rankUpdate(v1,v2);
+ VERIFY_IS_APPROX(m2, (m1 + v1 * v2.adjoint()+ v2 * v1.adjoint()).template triangularView<Lower>().toDenseMatrix());
- m2 = m1.template triangularView<UpperTriangular>();
- m2.template selfadjointView<UpperTriangular>().rankUpdate(-v1,s2*v2,s3);
- VERIFY_IS_APPROX(m2, (m1 + (-s2*s3) * (v1 * v2.adjoint()+ v2 * v1.adjoint())).template triangularView<UpperTriangular>().toDenseMatrix());
+ m2 = m1.template triangularView<Upper>();
+ m2.template selfadjointView<Upper>().rankUpdate(-v1,s2*v2,s3);
+ VERIFY_IS_APPROX(m2, (m1 + (-s2*s3) * (v1 * v2.adjoint()+ v2 * v1.adjoint())).template triangularView<Upper>().toDenseMatrix());
- m2 = m1.template triangularView<UpperTriangular>();
- m2.template selfadjointView<UpperTriangular>().rankUpdate(-r1.adjoint(),r2.adjoint()*s3,s1);
- VERIFY_IS_APPROX(m2, (m1 + (-s3*s1) * (r1.adjoint() * r2 + r2.adjoint() * r1)).template triangularView<UpperTriangular>().toDenseMatrix());
+ m2 = m1.template triangularView<Upper>();
+ m2.template selfadjointView<Upper>().rankUpdate(-r1.adjoint(),r2.adjoint()*s3,s1);
+ VERIFY_IS_APPROX(m2, (m1 + (-s3*s1) * (r1.adjoint() * r2 + r2.adjoint() * r1)).template triangularView<Upper>().toDenseMatrix());
if (rows>1)
{
- m2 = m1.template triangularView<LowerTriangular>();
- m2.block(1,1,rows-1,cols-1).template selfadjointView<LowerTriangular>().rankUpdate(v1.tail(rows-1),v2.head(cols-1));
+ m2 = m1.template triangularView<Lower>();
+ m2.block(1,1,rows-1,cols-1).template selfadjointView<Lower>().rankUpdate(v1.tail(rows-1),v2.head(cols-1));
m3 = m1;
m3.block(1,1,rows-1,cols-1) += v1.tail(rows-1) * v2.head(cols-1).adjoint()+ v2.head(cols-1) * v1.tail(rows-1).adjoint();
- VERIFY_IS_APPROX(m2, m3.template triangularView<LowerTriangular>().toDenseMatrix());
+ VERIFY_IS_APPROX(m2, m3.template triangularView<Lower>().toDenseMatrix());
}
}
diff --git a/test/product_symm.cpp b/test/product_symm.cpp
index a9e055bd3..a0d80080f 100644
--- a/test/product_symm.cpp
+++ b/test/product_symm.cpp
@@ -28,10 +28,10 @@ template<int OtherSize> struct symm_extra {
template<typename M1, typename M2, typename Scalar>
static void run(M1& m1, M1& m2, M2& rhs2, M2& rhs22, M2& rhs23, Scalar s1, Scalar s2)
{
- m2 = m1.template triangularView<LowerTriangular>();
- VERIFY_IS_APPROX(rhs22 = (rhs2) * (m2).template selfadjointView<LowerTriangular>(),
+ m2 = m1.template triangularView<Lower>();
+ VERIFY_IS_APPROX(rhs22 = (rhs2) * (m2).template selfadjointView<Lower>(),
rhs23 = (rhs2) * (m1));
- VERIFY_IS_APPROX(rhs22 = (s2*rhs2) * (s1*m2).template selfadjointView<LowerTriangular>(),
+ VERIFY_IS_APPROX(rhs22 = (s2*rhs2) * (s1*m2).template selfadjointView<Lower>(),
rhs23 = (s2*rhs2) * (s1*m1));
}
};
@@ -65,38 +65,38 @@ template<typename Scalar, int Size, int OtherSize> void symm(int size = Size, in
Scalar s1 = ei_random<Scalar>(),
s2 = ei_random<Scalar>();
- m2 = m1.template triangularView<LowerTriangular>();
- VERIFY_IS_APPROX(rhs12 = (s1*m2).template selfadjointView<LowerTriangular>() * (s2*rhs1),
+ m2 = m1.template triangularView<Lower>();
+ VERIFY_IS_APPROX(rhs12 = (s1*m2).template selfadjointView<Lower>() * (s2*rhs1),
rhs13 = (s1*m1) * (s2*rhs1));
- m2 = m1.template triangularView<UpperTriangular>(); rhs12.setRandom(); rhs13 = rhs12;
- VERIFY_IS_APPROX(rhs12 += (s1*m2).template selfadjointView<UpperTriangular>() * (s2*rhs1),
+ m2 = m1.template triangularView<Upper>(); rhs12.setRandom(); rhs13 = rhs12;
+ VERIFY_IS_APPROX(rhs12 += (s1*m2).template selfadjointView<Upper>() * (s2*rhs1),
rhs13 += (s1*m1) * (s2*rhs1));
- m2 = m1.template triangularView<LowerTriangular>();
- VERIFY_IS_APPROX(rhs12 = (s1*m2).template selfadjointView<LowerTriangular>() * (s2*rhs2.adjoint()),
+ m2 = m1.template triangularView<Lower>();
+ VERIFY_IS_APPROX(rhs12 = (s1*m2).template selfadjointView<Lower>() * (s2*rhs2.adjoint()),
rhs13 = (s1*m1) * (s2*rhs2.adjoint()));
- m2 = m1.template triangularView<UpperTriangular>();
- VERIFY_IS_APPROX(rhs12 = (s1*m2).template selfadjointView<UpperTriangular>() * (s2*rhs2.adjoint()),
+ m2 = m1.template triangularView<Upper>();
+ VERIFY_IS_APPROX(rhs12 = (s1*m2).template selfadjointView<Upper>() * (s2*rhs2.adjoint()),
rhs13 = (s1*m1) * (s2*rhs2.adjoint()));
- m2 = m1.template triangularView<UpperTriangular>();
- VERIFY_IS_APPROX(rhs12 = (s1*m2.adjoint()).template selfadjointView<LowerTriangular>() * (s2*rhs2.adjoint()),
+ m2 = m1.template triangularView<Upper>();
+ VERIFY_IS_APPROX(rhs12 = (s1*m2.adjoint()).template selfadjointView<Lower>() * (s2*rhs2.adjoint()),
rhs13 = (s1*m1.adjoint()) * (s2*rhs2.adjoint()));
// test row major = <...>
- m2 = m1.template triangularView<LowerTriangular>(); rhs12.setRandom(); rhs13 = rhs12;
- VERIFY_IS_APPROX(rhs12 -= (s1*m2).template selfadjointView<LowerTriangular>() * (s2*rhs3),
+ m2 = m1.template triangularView<Lower>(); rhs12.setRandom(); rhs13 = rhs12;
+ VERIFY_IS_APPROX(rhs12 -= (s1*m2).template selfadjointView<Lower>() * (s2*rhs3),
rhs13 -= (s1*m1) * (s2 * rhs3));
- m2 = m1.template triangularView<UpperTriangular>();
- VERIFY_IS_APPROX(rhs12 = (s1*m2.adjoint()).template selfadjointView<LowerTriangular>() * (s2*rhs3).conjugate(),
+ m2 = m1.template triangularView<Upper>();
+ VERIFY_IS_APPROX(rhs12 = (s1*m2.adjoint()).template selfadjointView<Lower>() * (s2*rhs3).conjugate(),
rhs13 = (s1*m1.adjoint()) * (s2*rhs3).conjugate());
- m2 = m1.template triangularView<UpperTriangular>(); rhs13 = rhs12;
- VERIFY_IS_APPROX(rhs12.noalias() += s1 * ((m2.adjoint()).template selfadjointView<LowerTriangular>() * (s2*rhs3).conjugate()),
+ m2 = m1.template triangularView<Upper>(); rhs13 = rhs12;
+ VERIFY_IS_APPROX(rhs12.noalias() += s1 * ((m2.adjoint()).template selfadjointView<Lower>() * (s2*rhs3).conjugate()),
rhs13 += (s1*m1.adjoint()) * (s2*rhs3).conjugate());
// test matrix * selfadjoint
diff --git a/test/product_syrk.cpp b/test/product_syrk.cpp
index 9f6aec0e2..e597ac88a 100644
--- a/test/product_syrk.cpp
+++ b/test/product_syrk.cpp
@@ -45,28 +45,28 @@ template<typename MatrixType> void syrk(const MatrixType& m)
Scalar s1 = ei_random<Scalar>();
m2.setZero();
- VERIFY_IS_APPROX((m2.template selfadjointView<LowerTriangular>().rankUpdate(rhs2,s1)._expression()),
- ((s1 * rhs2 * rhs2.adjoint()).eval().template triangularView<LowerTriangular>().toDenseMatrix()));
+ VERIFY_IS_APPROX((m2.template selfadjointView<Lower>().rankUpdate(rhs2,s1)._expression()),
+ ((s1 * rhs2 * rhs2.adjoint()).eval().template triangularView<Lower>().toDenseMatrix()));
m2.setZero();
- VERIFY_IS_APPROX(m2.template selfadjointView<UpperTriangular>().rankUpdate(rhs2,s1)._expression(),
- (s1 * rhs2 * rhs2.adjoint()).eval().template triangularView<UpperTriangular>().toDenseMatrix());
+ VERIFY_IS_APPROX(m2.template selfadjointView<Upper>().rankUpdate(rhs2,s1)._expression(),
+ (s1 * rhs2 * rhs2.adjoint()).eval().template triangularView<Upper>().toDenseMatrix());
m2.setZero();
- VERIFY_IS_APPROX(m2.template selfadjointView<LowerTriangular>().rankUpdate(rhs1.adjoint(),s1)._expression(),
- (s1 * rhs1.adjoint() * rhs1).eval().template triangularView<LowerTriangular>().toDenseMatrix());
+ VERIFY_IS_APPROX(m2.template selfadjointView<Lower>().rankUpdate(rhs1.adjoint(),s1)._expression(),
+ (s1 * rhs1.adjoint() * rhs1).eval().template triangularView<Lower>().toDenseMatrix());
m2.setZero();
- VERIFY_IS_APPROX(m2.template selfadjointView<UpperTriangular>().rankUpdate(rhs1.adjoint(),s1)._expression(),
- (s1 * rhs1.adjoint() * rhs1).eval().template triangularView<UpperTriangular>().toDenseMatrix());
+ VERIFY_IS_APPROX(m2.template selfadjointView<Upper>().rankUpdate(rhs1.adjoint(),s1)._expression(),
+ (s1 * rhs1.adjoint() * rhs1).eval().template triangularView<Upper>().toDenseMatrix());
m2.setZero();
- VERIFY_IS_APPROX(m2.template selfadjointView<LowerTriangular>().rankUpdate(rhs3.adjoint(),s1)._expression(),
- (s1 * rhs3.adjoint() * rhs3).eval().template triangularView<LowerTriangular>().toDenseMatrix());
+ VERIFY_IS_APPROX(m2.template selfadjointView<Lower>().rankUpdate(rhs3.adjoint(),s1)._expression(),
+ (s1 * rhs3.adjoint() * rhs3).eval().template triangularView<Lower>().toDenseMatrix());
m2.setZero();
- VERIFY_IS_APPROX(m2.template selfadjointView<UpperTriangular>().rankUpdate(rhs3.adjoint(),s1)._expression(),
- (s1 * rhs3.adjoint() * rhs3).eval().template triangularView<UpperTriangular>().toDenseMatrix());
+ VERIFY_IS_APPROX(m2.template selfadjointView<Upper>().rankUpdate(rhs3.adjoint(),s1)._expression(),
+ (s1 * rhs3.adjoint() * rhs3).eval().template triangularView<Upper>().toDenseMatrix());
}
void test_product_syrk()
diff --git a/test/product_trmm.cpp b/test/product_trmm.cpp
index 5f92391e6..69e97f7aa 100644
--- a/test/product_trmm.cpp
+++ b/test/product_trmm.cpp
@@ -36,27 +36,27 @@ template<typename Scalar> void trmm(int size,int othersize)
s2 = ei_random<Scalar>();
tri.setRandom();
- loTri = tri.template triangularView<LowerTriangular>();
- upTri = tri.template triangularView<UpperTriangular>();
+ loTri = tri.template triangularView<Lower>();
+ upTri = tri.template triangularView<Upper>();
ge1.setRandom();
ge2.setRandom();
- VERIFY_IS_APPROX( ge3 = tri.template triangularView<LowerTriangular>() * ge1, loTri * ge1);
- VERIFY_IS_APPROX(rge3 = tri.template triangularView<LowerTriangular>() * ge1, loTri * ge1);
- VERIFY_IS_APPROX( ge3 = tri.template triangularView<UpperTriangular>() * ge1, upTri * ge1);
- VERIFY_IS_APPROX(rge3 = tri.template triangularView<UpperTriangular>() * ge1, upTri * ge1);
- VERIFY_IS_APPROX( ge3 = (s1*tri.adjoint()).template triangularView<UpperTriangular>() * (s2*ge1), s1*loTri.adjoint() * (s2*ge1));
- VERIFY_IS_APPROX(rge3 = tri.adjoint().template triangularView<UpperTriangular>() * ge1, loTri.adjoint() * ge1);
- VERIFY_IS_APPROX( ge3 = tri.adjoint().template triangularView<LowerTriangular>() * ge1, upTri.adjoint() * ge1);
- VERIFY_IS_APPROX(rge3 = tri.adjoint().template triangularView<LowerTriangular>() * ge1, upTri.adjoint() * ge1);
- VERIFY_IS_APPROX( ge3 = tri.template triangularView<LowerTriangular>() * ge2.adjoint(), loTri * ge2.adjoint());
- VERIFY_IS_APPROX(rge3 = tri.template triangularView<LowerTriangular>() * ge2.adjoint(), loTri * ge2.adjoint());
- VERIFY_IS_APPROX( ge3 = tri.template triangularView<UpperTriangular>() * ge2.adjoint(), upTri * ge2.adjoint());
- VERIFY_IS_APPROX(rge3 = tri.template triangularView<UpperTriangular>() * ge2.adjoint(), upTri * ge2.adjoint());
- VERIFY_IS_APPROX( ge3 = (s1*tri).adjoint().template triangularView<UpperTriangular>() * ge2.adjoint(), ei_conj(s1) * loTri.adjoint() * ge2.adjoint());
- VERIFY_IS_APPROX(rge3 = tri.adjoint().template triangularView<UpperTriangular>() * ge2.adjoint(), loTri.adjoint() * ge2.adjoint());
- VERIFY_IS_APPROX( ge3 = tri.adjoint().template triangularView<LowerTriangular>() * ge2.adjoint(), upTri.adjoint() * ge2.adjoint());
- VERIFY_IS_APPROX(rge3 = tri.adjoint().template triangularView<LowerTriangular>() * ge2.adjoint(), upTri.adjoint() * ge2.adjoint());
+ VERIFY_IS_APPROX( ge3 = tri.template triangularView<Lower>() * ge1, loTri * ge1);
+ VERIFY_IS_APPROX(rge3 = tri.template triangularView<Lower>() * ge1, loTri * ge1);
+ VERIFY_IS_APPROX( ge3 = tri.template triangularView<Upper>() * ge1, upTri * ge1);
+ VERIFY_IS_APPROX(rge3 = tri.template triangularView<Upper>() * ge1, upTri * ge1);
+ VERIFY_IS_APPROX( ge3 = (s1*tri.adjoint()).template triangularView<Upper>() * (s2*ge1), s1*loTri.adjoint() * (s2*ge1));
+ VERIFY_IS_APPROX(rge3 = tri.adjoint().template triangularView<Upper>() * ge1, loTri.adjoint() * ge1);
+ VERIFY_IS_APPROX( ge3 = tri.adjoint().template triangularView<Lower>() * ge1, upTri.adjoint() * ge1);
+ VERIFY_IS_APPROX(rge3 = tri.adjoint().template triangularView<Lower>() * ge1, upTri.adjoint() * ge1);
+ VERIFY_IS_APPROX( ge3 = tri.template triangularView<Lower>() * ge2.adjoint(), loTri * ge2.adjoint());
+ VERIFY_IS_APPROX(rge3 = tri.template triangularView<Lower>() * ge2.adjoint(), loTri * ge2.adjoint());
+ VERIFY_IS_APPROX( ge3 = tri.template triangularView<Upper>() * ge2.adjoint(), upTri * ge2.adjoint());
+ VERIFY_IS_APPROX(rge3 = tri.template triangularView<Upper>() * ge2.adjoint(), upTri * ge2.adjoint());
+ VERIFY_IS_APPROX( ge3 = (s1*tri).adjoint().template triangularView<Upper>() * ge2.adjoint(), ei_conj(s1) * loTri.adjoint() * ge2.adjoint());
+ VERIFY_IS_APPROX(rge3 = tri.adjoint().template triangularView<Upper>() * ge2.adjoint(), loTri.adjoint() * ge2.adjoint());
+ VERIFY_IS_APPROX( ge3 = tri.adjoint().template triangularView<Lower>() * ge2.adjoint(), upTri.adjoint() * ge2.adjoint());
+ VERIFY_IS_APPROX(rge3 = tri.adjoint().template triangularView<Lower>() * ge2.adjoint(), upTri.adjoint() * ge2.adjoint());
}
void test_product_trmm()
diff --git a/test/product_trmv.cpp b/test/product_trmv.cpp
index 5016a5b1f..f0962557a 100644
--- a/test/product_trmv.cpp
+++ b/test/product_trmv.cpp
@@ -44,37 +44,37 @@ template<typename MatrixType> void trmv(const MatrixType& m)
m1 = MatrixType::Random(rows, cols);
// check with a column-major matrix
- m3 = m1.template triangularView<Eigen::LowerTriangular>();
- VERIFY((m3 * v1).isApprox(m1.template triangularView<Eigen::LowerTriangular>() * v1, largerEps));
- m3 = m1.template triangularView<Eigen::UpperTriangular>();
- VERIFY((m3 * v1).isApprox(m1.template triangularView<Eigen::UpperTriangular>() * v1, largerEps));
- m3 = m1.template triangularView<Eigen::UnitLowerTriangular>();
- VERIFY((m3 * v1).isApprox(m1.template triangularView<Eigen::UnitLowerTriangular>() * v1, largerEps));
- m3 = m1.template triangularView<Eigen::UnitUpperTriangular>();
- VERIFY((m3 * v1).isApprox(m1.template triangularView<Eigen::UnitUpperTriangular>() * v1, largerEps));
+ m3 = m1.template triangularView<Eigen::Lower>();
+ VERIFY((m3 * v1).isApprox(m1.template triangularView<Eigen::Lower>() * v1, largerEps));
+ m3 = m1.template triangularView<Eigen::Upper>();
+ VERIFY((m3 * v1).isApprox(m1.template triangularView<Eigen::Upper>() * v1, largerEps));
+ m3 = m1.template triangularView<Eigen::UnitLower>();
+ VERIFY((m3 * v1).isApprox(m1.template triangularView<Eigen::UnitLower>() * v1, largerEps));
+ m3 = m1.template triangularView<Eigen::UnitUpper>();
+ VERIFY((m3 * v1).isApprox(m1.template triangularView<Eigen::UnitUpper>() * v1, largerEps));
// check conjugated and scalar multiple expressions (col-major)
- m3 = m1.template triangularView<Eigen::LowerTriangular>();
- VERIFY(((s1*m3).conjugate() * v1).isApprox((s1*m1).conjugate().template triangularView<Eigen::LowerTriangular>() * v1, largerEps));
- m3 = m1.template triangularView<Eigen::UpperTriangular>();
- VERIFY((m3.conjugate() * v1.conjugate()).isApprox(m1.conjugate().template triangularView<Eigen::UpperTriangular>() * v1.conjugate(), largerEps));
+ m3 = m1.template triangularView<Eigen::Lower>();
+ VERIFY(((s1*m3).conjugate() * v1).isApprox((s1*m1).conjugate().template triangularView<Eigen::Lower>() * v1, largerEps));
+ m3 = m1.template triangularView<Eigen::Upper>();
+ VERIFY((m3.conjugate() * v1.conjugate()).isApprox(m1.conjugate().template triangularView<Eigen::Upper>() * v1.conjugate(), largerEps));
// check with a row-major matrix
- m3 = m1.template triangularView<Eigen::UpperTriangular>();
- VERIFY((m3.transpose() * v1).isApprox(m1.transpose().template triangularView<Eigen::LowerTriangular>() * v1, largerEps));
- m3 = m1.template triangularView<Eigen::LowerTriangular>();
- VERIFY((m3.transpose() * v1).isApprox(m1.transpose().template triangularView<Eigen::UpperTriangular>() * v1, largerEps));
- m3 = m1.template triangularView<Eigen::UnitUpperTriangular>();
- VERIFY((m3.transpose() * v1).isApprox(m1.transpose().template triangularView<Eigen::UnitLowerTriangular>() * v1, largerEps));
- m3 = m1.template triangularView<Eigen::UnitLowerTriangular>();
- VERIFY((m3.transpose() * v1).isApprox(m1.transpose().template triangularView<Eigen::UnitUpperTriangular>() * v1, largerEps));
+ m3 = m1.template triangularView<Eigen::Upper>();
+ VERIFY((m3.transpose() * v1).isApprox(m1.transpose().template triangularView<Eigen::Lower>() * v1, largerEps));
+ m3 = m1.template triangularView<Eigen::Lower>();
+ VERIFY((m3.transpose() * v1).isApprox(m1.transpose().template triangularView<Eigen::Upper>() * v1, largerEps));
+ m3 = m1.template triangularView<Eigen::UnitUpper>();
+ VERIFY((m3.transpose() * v1).isApprox(m1.transpose().template triangularView<Eigen::UnitLower>() * v1, largerEps));
+ m3 = m1.template triangularView<Eigen::UnitLower>();
+ VERIFY((m3.transpose() * v1).isApprox(m1.transpose().template triangularView<Eigen::UnitUpper>() * v1, largerEps));
// check conjugated and scalar multiple expressions (row-major)
- m3 = m1.template triangularView<Eigen::UpperTriangular>();
- VERIFY((m3.adjoint() * v1).isApprox(m1.adjoint().template triangularView<Eigen::LowerTriangular>() * v1, largerEps));
- m3 = m1.template triangularView<Eigen::LowerTriangular>();
- VERIFY((m3.adjoint() * (s1*v1.conjugate())).isApprox(m1.adjoint().template triangularView<Eigen::UpperTriangular>() * (s1*v1.conjugate()), largerEps));
- m3 = m1.template triangularView<Eigen::UnitUpperTriangular>();
+ m3 = m1.template triangularView<Eigen::Upper>();
+ VERIFY((m3.adjoint() * v1).isApprox(m1.adjoint().template triangularView<Eigen::Lower>() * v1, largerEps));
+ m3 = m1.template triangularView<Eigen::Lower>();
+ VERIFY((m3.adjoint() * (s1*v1.conjugate())).isApprox(m1.adjoint().template triangularView<Eigen::Upper>() * (s1*v1.conjugate()), largerEps));
+ m3 = m1.template triangularView<Eigen::UnitUpper>();
// TODO check with sub-matrices
}
diff --git a/test/product_trsolve.cpp b/test/product_trsolve.cpp
index 4477a29d1..6e916230e 100644
--- a/test/product_trsolve.cpp
+++ b/test/product_trsolve.cpp
@@ -49,28 +49,28 @@ template<typename Scalar,int Size, int Cols> void trsolve(int size=Size,int cols
cmLhs.setRandom(); cmLhs *= static_cast<RealScalar>(0.1); cmLhs.diagonal().array() += static_cast<RealScalar>(1);
rmLhs.setRandom(); rmLhs *= static_cast<RealScalar>(0.1); rmLhs.diagonal().array() += static_cast<RealScalar>(1);
- VERIFY_TRSM(cmLhs.conjugate().template triangularView<LowerTriangular>(), cmRhs);
- VERIFY_TRSM(cmLhs .template triangularView<UpperTriangular>(), cmRhs);
- VERIFY_TRSM(cmLhs .template triangularView<LowerTriangular>(), rmRhs);
- VERIFY_TRSM(cmLhs.conjugate().template triangularView<UpperTriangular>(), rmRhs);
+ VERIFY_TRSM(cmLhs.conjugate().template triangularView<Lower>(), cmRhs);
+ VERIFY_TRSM(cmLhs .template triangularView<Upper>(), cmRhs);
+ VERIFY_TRSM(cmLhs .template triangularView<Lower>(), rmRhs);
+ VERIFY_TRSM(cmLhs.conjugate().template triangularView<Upper>(), rmRhs);
- VERIFY_TRSM(cmLhs.conjugate().template triangularView<UnitLowerTriangular>(), cmRhs);
- VERIFY_TRSM(cmLhs .template triangularView<UnitUpperTriangular>(), rmRhs);
+ VERIFY_TRSM(cmLhs.conjugate().template triangularView<UnitLower>(), cmRhs);
+ VERIFY_TRSM(cmLhs .template triangularView<UnitUpper>(), rmRhs);
- VERIFY_TRSM(rmLhs .template triangularView<LowerTriangular>(), cmRhs);
- VERIFY_TRSM(rmLhs.conjugate().template triangularView<UnitUpperTriangular>(), rmRhs);
+ VERIFY_TRSM(rmLhs .template triangularView<Lower>(), cmRhs);
+ VERIFY_TRSM(rmLhs.conjugate().template triangularView<UnitUpper>(), rmRhs);
- VERIFY_TRSM_ONTHERIGHT(cmLhs.conjugate().template triangularView<LowerTriangular>(), cmRhs);
- VERIFY_TRSM_ONTHERIGHT(cmLhs .template triangularView<UpperTriangular>(), cmRhs);
- VERIFY_TRSM_ONTHERIGHT(cmLhs .template triangularView<LowerTriangular>(), rmRhs);
- VERIFY_TRSM_ONTHERIGHT(cmLhs.conjugate().template triangularView<UpperTriangular>(), rmRhs);
+ VERIFY_TRSM_ONTHERIGHT(cmLhs.conjugate().template triangularView<Lower>(), cmRhs);
+ VERIFY_TRSM_ONTHERIGHT(cmLhs .template triangularView<Upper>(), cmRhs);
+ VERIFY_TRSM_ONTHERIGHT(cmLhs .template triangularView<Lower>(), rmRhs);
+ VERIFY_TRSM_ONTHERIGHT(cmLhs.conjugate().template triangularView<Upper>(), rmRhs);
- VERIFY_TRSM_ONTHERIGHT(cmLhs.conjugate().template triangularView<UnitLowerTriangular>(), cmRhs);
- VERIFY_TRSM_ONTHERIGHT(cmLhs .template triangularView<UnitUpperTriangular>(), rmRhs);
+ VERIFY_TRSM_ONTHERIGHT(cmLhs.conjugate().template triangularView<UnitLower>(), cmRhs);
+ VERIFY_TRSM_ONTHERIGHT(cmLhs .template triangularView<UnitUpper>(), rmRhs);
- VERIFY_TRSM_ONTHERIGHT(rmLhs .template triangularView<LowerTriangular>(), cmRhs);
- VERIFY_TRSM_ONTHERIGHT(rmLhs.conjugate().template triangularView<UnitUpperTriangular>(), rmRhs);
+ VERIFY_TRSM_ONTHERIGHT(rmLhs .template triangularView<Lower>(), cmRhs);
+ VERIFY_TRSM_ONTHERIGHT(rmLhs.conjugate().template triangularView<UnitUpper>(), rmRhs);
}
void test_product_trsolve()
diff --git a/test/qr_colpivoting.cpp b/test/qr_colpivoting.cpp
index 8b56cd296..16eb27c52 100644
--- a/test/qr_colpivoting.cpp
+++ b/test/qr_colpivoting.cpp
@@ -47,7 +47,7 @@ template<typename MatrixType> void qr()
MatrixQType q = qr.householderQ();
VERIFY_IS_UNITARY(q);
- MatrixType r = qr.matrixQR().template triangularView<UpperTriangular>();
+ MatrixType r = qr.matrixQR().template triangularView<Upper>();
MatrixType c = q * r * qr.colsPermutation().inverse();
VERIFY_IS_APPROX(m1, c);
@@ -72,7 +72,7 @@ template<typename MatrixType, int Cols2> void qr_fixedsize()
VERIFY(!qr.isInvertible());
VERIFY(!qr.isSurjective());
- Matrix<Scalar,Rows,Cols> r = qr.matrixQR().template triangularView<UpperTriangular>();
+ Matrix<Scalar,Rows,Cols> r = qr.matrixQR().template triangularView<Upper>();
Matrix<Scalar,Rows,Cols> c = qr.householderQ() * r * qr.colsPermutation().inverse();
VERIFY_IS_APPROX(m1, c);
diff --git a/test/sparse_product.cpp b/test/sparse_product.cpp
index 00c2cdf74..04e089784 100644
--- a/test/sparse_product.cpp
+++ b/test/sparse_product.cpp
@@ -115,9 +115,9 @@ template<typename SparseMatrixType> void sparse_product(const SparseMatrixType&
VERIFY_IS_APPROX(mS, refS);
VERIFY_IS_APPROX(x=mS*b, refX=refS*b);
- VERIFY_IS_APPROX(x=mUp.template selfadjointView<UpperTriangular>()*b, refX=refS*b);
- VERIFY_IS_APPROX(x=mLo.template selfadjointView<LowerTriangular>()*b, refX=refS*b);
- VERIFY_IS_APPROX(x=mS.template selfadjointView<UpperTriangular|LowerTriangular>()*b, refX=refS*b);
+ VERIFY_IS_APPROX(x=mUp.template selfadjointView<Upper>()*b, refX=refS*b);
+ VERIFY_IS_APPROX(x=mLo.template selfadjointView<Lower>()*b, refX=refS*b);
+ VERIFY_IS_APPROX(x=mS.template selfadjointView<Upper|Lower>()*b, refX=refS*b);
}
}
diff --git a/test/sparse_solvers.cpp b/test/sparse_solvers.cpp
index 059747c3d..fab2ab56e 100644
--- a/test/sparse_solvers.cpp
+++ b/test/sparse_solvers.cpp
@@ -65,23 +65,23 @@ template<typename Scalar> void sparse_solvers(int rows, int cols)
// lower - dense
initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeLowerTriangular, &zeroCoords, &nonzeroCoords);
- VERIFY_IS_APPROX(refMat2.template triangularView<LowerTriangular>().solve(vec2),
- m2.template triangularView<LowerTriangular>().solve(vec3));
+ VERIFY_IS_APPROX(refMat2.template triangularView<Lower>().solve(vec2),
+ m2.template triangularView<Lower>().solve(vec3));
// upper - dense
initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeUpperTriangular, &zeroCoords, &nonzeroCoords);
- VERIFY_IS_APPROX(refMat2.template triangularView<UpperTriangular>().solve(vec2),
- m2.template triangularView<UpperTriangular>().solve(vec3));
+ VERIFY_IS_APPROX(refMat2.template triangularView<Upper>().solve(vec2),
+ m2.template triangularView<Upper>().solve(vec3));
// lower - transpose
initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeLowerTriangular, &zeroCoords, &nonzeroCoords);
- VERIFY_IS_APPROX(refMat2.transpose().template triangularView<UpperTriangular>().solve(vec2),
- m2.transpose().template triangularView<UpperTriangular>().solve(vec3));
+ VERIFY_IS_APPROX(refMat2.transpose().template triangularView<Upper>().solve(vec2),
+ m2.transpose().template triangularView<Upper>().solve(vec3));
// upper - transpose
initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeUpperTriangular, &zeroCoords, &nonzeroCoords);
- VERIFY_IS_APPROX(refMat2.transpose().template triangularView<LowerTriangular>().solve(vec2),
- m2.transpose().template triangularView<LowerTriangular>().solve(vec3));
+ VERIFY_IS_APPROX(refMat2.transpose().template triangularView<Lower>().solve(vec2),
+ m2.transpose().template triangularView<Lower>().solve(vec3));
SparseMatrix<Scalar> matB(rows, rows);
DenseMatrix refMatB = DenseMatrix::Zero(rows, rows);
@@ -89,21 +89,21 @@ template<typename Scalar> void sparse_solvers(int rows, int cols)
// lower - sparse
initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeLowerTriangular);
initSparse<Scalar>(density, refMatB, matB);
- refMat2.template triangularView<LowerTriangular>().solveInPlace(refMatB);
- m2.template triangularView<LowerTriangular>().solveInPlace(matB);
+ refMat2.template triangularView<Lower>().solveInPlace(refMatB);
+ m2.template triangularView<Lower>().solveInPlace(matB);
VERIFY_IS_APPROX(matB.toDense(), refMatB);
// upper - sparse
initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeUpperTriangular);
initSparse<Scalar>(density, refMatB, matB);
- refMat2.template triangularView<UpperTriangular>().solveInPlace(refMatB);
- m2.template triangularView<UpperTriangular>().solveInPlace(matB);
+ refMat2.template triangularView<Upper>().solveInPlace(refMatB);
+ m2.template triangularView<Upper>().solveInPlace(matB);
VERIFY_IS_APPROX(matB, refMatB);
// test deprecated API
initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeLowerTriangular, &zeroCoords, &nonzeroCoords);
- VERIFY_IS_APPROX(refMat2.template triangularView<LowerTriangular>().solve(vec2),
- m2.template triangularView<LowerTriangular>().solve(vec3));
+ VERIFY_IS_APPROX(refMat2.template triangularView<Lower>().solve(vec2),
+ m2.template triangularView<Lower>().solve(vec3));
}
// test LLT
@@ -118,29 +118,28 @@ template<typename Scalar> void sparse_solvers(int rows, int cols)
initSPD(density, refMat2, m2);
refX = refMat2.llt().solve(b);
- typedef SparseMatrix<Scalar,LowerTriangular|SelfAdjoint> SparseSelfAdjointMatrix;
if (!NumTraits<Scalar>::IsComplex)
{
x = b;
- SparseLLT<SparseSelfAdjointMatrix> (m2).solveInPlace(x);
+ SparseLLT<SparseMatrix<Scalar> > (m2).solveInPlace(x);
VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: default");
}
#ifdef EIGEN_CHOLMOD_SUPPORT
x = b;
- SparseLLT<SparseSelfAdjointMatrix,Cholmod>(m2).solveInPlace(x);
+ SparseLLT<SparseMatrix<Scalar> ,Cholmod>(m2).solveInPlace(x);
VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: cholmod");
#endif
#ifdef EIGEN_TAUCS_SUPPORT
x = b;
- SparseLLT<SparseSelfAdjointMatrix,Taucs>(m2,IncompleteFactorization).solveInPlace(x);
+ SparseLLT<SparseMatrix<Scalar> ,Taucs>(m2,IncompleteFactorization).solveInPlace(x);
VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: taucs (IncompleteFactorization)");
// TODO fix TAUCS with complexes
x = b;
- SparseLLT<SparseSelfAdjointMatrix,Taucs>(m2,SupernodalMultifrontal).solveInPlace(x);
+ SparseLLT<SparseMatrix<Scalar> ,Taucs>(m2,SupernodalMultifrontal).solveInPlace(x);
VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: taucs (SupernodalMultifrontal)");
x = b;
- SparseLLT<SparseSelfAdjointMatrix,Taucs>(m2,SupernodalLeftLooking).solveInPlace(x);
+ SparseLLT<SparseMatrix<Scalar> ,Taucs>(m2,SupernodalLeftLooking).solveInPlace(x);
VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: taucs (SupernodalLeftLooking)");
#endif
}
@@ -161,7 +160,7 @@ template<typename Scalar> void sparse_solvers(int rows, int cols)
refMat2.diagonal() *= 0.5;
refX = refMat2.llt().solve(b); // FIXME use LLT to compute the reference because LDLT seems to fail with large matrices
- typedef SparseMatrix<Scalar,UpperTriangular|SelfAdjoint> SparseSelfAdjointMatrix;
+ typedef SparseMatrix<Scalar,Upper|SelfAdjoint> SparseSelfAdjointMatrix;
x = b;
SparseLDLT<SparseSelfAdjointMatrix> ldlt(m2);
if (ldlt.succeeded())
diff --git a/test/triangular.cpp b/test/triangular.cpp
index 0de9f5841..2903e247c 100644
--- a/test/triangular.cpp
+++ b/test/triangular.cpp
@@ -53,14 +53,14 @@ template<typename MatrixType> void triangular_square(const MatrixType& m)
v2 = VectorType::Random(rows),
vzero = VectorType::Zero(rows);
- MatrixType m1up = m1.template triangularView<UpperTriangular>();
- MatrixType m2up = m2.template triangularView<UpperTriangular>();
+ MatrixType m1up = m1.template triangularView<Upper>();
+ MatrixType m2up = m2.template triangularView<Upper>();
if (rows*cols>1)
{
- VERIFY(m1up.isUpperTriangular());
- VERIFY(m2up.transpose().isLowerTriangular());
- VERIFY(!m2.isLowerTriangular());
+ VERIFY(m1up.isUpper());
+ VERIFY(m2up.transpose().isLower());
+ VERIFY(!m2.isLower());
}
// VERIFY_IS_APPROX(m1up.transpose() * m2, m1.upper().transpose().lower() * m2);
@@ -68,20 +68,20 @@ template<typename MatrixType> void triangular_square(const MatrixType& m)
// test overloaded operator+=
r1.setZero();
r2.setZero();
- r1.template triangularView<UpperTriangular>() += m1;
+ r1.template triangularView<Upper>() += m1;
r2 += m1up;
VERIFY_IS_APPROX(r1,r2);
// test overloaded operator=
m1.setZero();
- m1.template triangularView<UpperTriangular>() = m2.transpose() + m2;
+ m1.template triangularView<Upper>() = m2.transpose() + m2;
m3 = m2.transpose() + m2;
- VERIFY_IS_APPROX(m3.template triangularView<LowerTriangular>().transpose().toDenseMatrix(), m1);
+ VERIFY_IS_APPROX(m3.template triangularView<Lower>().transpose().toDenseMatrix(), m1);
// test overloaded operator=
m1.setZero();
- m1.template triangularView<LowerTriangular>() = m2.transpose() + m2;
- VERIFY_IS_APPROX(m3.template triangularView<LowerTriangular>().toDenseMatrix(), m1);
+ m1.template triangularView<Lower>() = m2.transpose() + m2;
+ VERIFY_IS_APPROX(m3.template triangularView<Lower>().toDenseMatrix(), m1);
m1 = MatrixType::Random(rows, cols);
for (int i=0; i<rows; ++i)
@@ -89,49 +89,49 @@ template<typename MatrixType> void triangular_square(const MatrixType& m)
Transpose<MatrixType> trm4(m4);
// test back and forward subsitution with a vector as the rhs
- m3 = m1.template triangularView<UpperTriangular>();
- VERIFY(v2.isApprox(m3.adjoint() * (m1.adjoint().template triangularView<LowerTriangular>().solve(v2)), largerEps));
- m3 = m1.template triangularView<LowerTriangular>();
- VERIFY(v2.isApprox(m3.transpose() * (m1.transpose().template triangularView<UpperTriangular>().solve(v2)), largerEps));
- m3 = m1.template triangularView<UpperTriangular>();
- VERIFY(v2.isApprox(m3 * (m1.template triangularView<UpperTriangular>().solve(v2)), largerEps));
- m3 = m1.template triangularView<LowerTriangular>();
- VERIFY(v2.isApprox(m3.conjugate() * (m1.conjugate().template triangularView<LowerTriangular>().solve(v2)), largerEps));
+ m3 = m1.template triangularView<Upper>();
+ VERIFY(v2.isApprox(m3.adjoint() * (m1.adjoint().template triangularView<Lower>().solve(v2)), largerEps));
+ m3 = m1.template triangularView<Lower>();
+ VERIFY(v2.isApprox(m3.transpose() * (m1.transpose().template triangularView<Upper>().solve(v2)), largerEps));
+ m3 = m1.template triangularView<Upper>();
+ VERIFY(v2.isApprox(m3 * (m1.template triangularView<Upper>().solve(v2)), largerEps));
+ m3 = m1.template triangularView<Lower>();
+ VERIFY(v2.isApprox(m3.conjugate() * (m1.conjugate().template triangularView<Lower>().solve(v2)), largerEps));
// test back and forward subsitution with a matrix as the rhs
- m3 = m1.template triangularView<UpperTriangular>();
- VERIFY(m2.isApprox(m3.adjoint() * (m1.adjoint().template triangularView<LowerTriangular>().solve(m2)), largerEps));
- m3 = m1.template triangularView<LowerTriangular>();
- VERIFY(m2.isApprox(m3.transpose() * (m1.transpose().template triangularView<UpperTriangular>().solve(m2)), largerEps));
- m3 = m1.template triangularView<UpperTriangular>();
- VERIFY(m2.isApprox(m3 * (m1.template triangularView<UpperTriangular>().solve(m2)), largerEps));
- m3 = m1.template triangularView<LowerTriangular>();
- VERIFY(m2.isApprox(m3.conjugate() * (m1.conjugate().template triangularView<LowerTriangular>().solve(m2)), largerEps));
+ m3 = m1.template triangularView<Upper>();
+ VERIFY(m2.isApprox(m3.adjoint() * (m1.adjoint().template triangularView<Lower>().solve(m2)), largerEps));
+ m3 = m1.template triangularView<Lower>();
+ VERIFY(m2.isApprox(m3.transpose() * (m1.transpose().template triangularView<Upper>().solve(m2)), largerEps));
+ m3 = m1.template triangularView<Upper>();
+ VERIFY(m2.isApprox(m3 * (m1.template triangularView<Upper>().solve(m2)), largerEps));
+ m3 = m1.template triangularView<Lower>();
+ VERIFY(m2.isApprox(m3.conjugate() * (m1.conjugate().template triangularView<Lower>().solve(m2)), largerEps));
// check M * inv(L) using in place API
m4 = m3;
- m3.transpose().template triangularView<Eigen::UpperTriangular>().solveInPlace(trm4);
+ m3.transpose().template triangularView<Eigen::Upper>().solveInPlace(trm4);
VERIFY(m4.cwiseAbs().isIdentity(test_precision<RealScalar>()));
// check M * inv(U) using in place API
- m3 = m1.template triangularView<UpperTriangular>();
+ m3 = m1.template triangularView<Upper>();
m4 = m3;
- m3.transpose().template triangularView<Eigen::LowerTriangular>().solveInPlace(trm4);
+ m3.transpose().template triangularView<Eigen::Lower>().solveInPlace(trm4);
VERIFY(m4.cwiseAbs().isIdentity(test_precision<RealScalar>()));
// check solve with unit diagonal
- m3 = m1.template triangularView<UnitUpperTriangular>();
- VERIFY(m2.isApprox(m3 * (m1.template triangularView<UnitUpperTriangular>().solve(m2)), largerEps));
+ m3 = m1.template triangularView<UnitUpper>();
+ VERIFY(m2.isApprox(m3 * (m1.template triangularView<UnitUpper>().solve(m2)), largerEps));
-// VERIFY(( m1.template triangularView<UpperTriangular>()
-// * m2.template triangularView<UpperTriangular>()).isUpperTriangular());
+// VERIFY(( m1.template triangularView<Upper>()
+// * m2.template triangularView<Upper>()).isUpper());
// test swap
m1.setOnes();
m2.setZero();
- m2.template triangularView<UpperTriangular>().swap(m1);
+ m2.template triangularView<Upper>().swap(m1);
m3.setZero();
- m3.template triangularView<UpperTriangular>().setOnes();
+ m3.template triangularView<Upper>().setOnes();
VERIFY_IS_APPROX(m2,m3);
}
@@ -165,69 +165,69 @@ template<typename MatrixType> void triangular_rect(const MatrixType& m)
v2 = VectorType::Random(rows),
vzero = VectorType::Zero(rows);
- MatrixType m1up = m1.template triangularView<UpperTriangular>();
- MatrixType m2up = m2.template triangularView<UpperTriangular>();
+ MatrixType m1up = m1.template triangularView<Upper>();
+ MatrixType m2up = m2.template triangularView<Upper>();
if (rows*cols>1)
{
- VERIFY(m1up.isUpperTriangular());
- VERIFY(m2up.transpose().isLowerTriangular());
- VERIFY(!m2.isLowerTriangular());
+ VERIFY(m1up.isUpper());
+ VERIFY(m2up.transpose().isLower());
+ VERIFY(!m2.isLower());
}
// test overloaded operator+=
r1.setZero();
r2.setZero();
- r1.template triangularView<UpperTriangular>() += m1;
+ r1.template triangularView<Upper>() += m1;
r2 += m1up;
VERIFY_IS_APPROX(r1,r2);
// test overloaded operator=
m1.setZero();
- m1.template triangularView<UpperTriangular>() = 3 * m2;
+ m1.template triangularView<Upper>() = 3 * m2;
m3 = 3 * m2;
- VERIFY_IS_APPROX(m3.template triangularView<UpperTriangular>().toDenseMatrix(), m1);
+ VERIFY_IS_APPROX(m3.template triangularView<Upper>().toDenseMatrix(), m1);
m1.setZero();
- m1.template triangularView<LowerTriangular>() = 3 * m2;
- VERIFY_IS_APPROX(m3.template triangularView<LowerTriangular>().toDenseMatrix(), m1);
+ m1.template triangularView<Lower>() = 3 * m2;
+ VERIFY_IS_APPROX(m3.template triangularView<Lower>().toDenseMatrix(), m1);
m1.setZero();
- m1.template triangularView<StrictlyUpperTriangular>() = 3 * m2;
- VERIFY_IS_APPROX(m3.template triangularView<StrictlyUpperTriangular>().toDenseMatrix(), m1);
+ m1.template triangularView<StrictlyUpper>() = 3 * m2;
+ VERIFY_IS_APPROX(m3.template triangularView<StrictlyUpper>().toDenseMatrix(), m1);
m1.setZero();
- m1.template triangularView<StrictlyLowerTriangular>() = 3 * m2;
- VERIFY_IS_APPROX(m3.template triangularView<StrictlyLowerTriangular>().toDenseMatrix(), m1);
+ m1.template triangularView<StrictlyLower>() = 3 * m2;
+ VERIFY_IS_APPROX(m3.template triangularView<StrictlyLower>().toDenseMatrix(), m1);
m1.setRandom();
- m2 = m1.template triangularView<UpperTriangular>();
- VERIFY(m2.isUpperTriangular());
- VERIFY(!m2.isLowerTriangular());
- m2 = m1.template triangularView<StrictlyUpperTriangular>();
- VERIFY(m2.isUpperTriangular());
+ m2 = m1.template triangularView<Upper>();
+ VERIFY(m2.isUpper());
+ VERIFY(!m2.isLower());
+ m2 = m1.template triangularView<StrictlyUpper>();
+ VERIFY(m2.isUpper());
VERIFY(m2.diagonal().isMuchSmallerThan(RealScalar(1)));
- m2 = m1.template triangularView<UnitUpperTriangular>();
- VERIFY(m2.isUpperTriangular());
+ m2 = m1.template triangularView<UnitUpper>();
+ VERIFY(m2.isUpper());
m2.diagonal().array() -= Scalar(1);
VERIFY(m2.diagonal().isMuchSmallerThan(RealScalar(1)));
- m2 = m1.template triangularView<LowerTriangular>();
- VERIFY(m2.isLowerTriangular());
- VERIFY(!m2.isUpperTriangular());
- m2 = m1.template triangularView<StrictlyLowerTriangular>();
- VERIFY(m2.isLowerTriangular());
+ m2 = m1.template triangularView<Lower>();
+ VERIFY(m2.isLower());
+ VERIFY(!m2.isUpper());
+ m2 = m1.template triangularView<StrictlyLower>();
+ VERIFY(m2.isLower());
VERIFY(m2.diagonal().isMuchSmallerThan(RealScalar(1)));
- m2 = m1.template triangularView<UnitLowerTriangular>();
- VERIFY(m2.isLowerTriangular());
+ m2 = m1.template triangularView<UnitLower>();
+ VERIFY(m2.isLower());
m2.diagonal().array() -= Scalar(1);
VERIFY(m2.diagonal().isMuchSmallerThan(RealScalar(1)));
// test swap
m1.setOnes();
m2.setZero();
- m2.template triangularView<UpperTriangular>().swap(m1);
+ m2.template triangularView<Upper>().swap(m1);
m3.setZero();
- m3.template triangularView<UpperTriangular>().setOnes();
+ m3.template triangularView<Upper>().setOnes();
VERIFY_IS_APPROX(m2,m3);
}