diff options
author | Benoit Jacob <jacob.benoit.1@gmail.com> | 2008-12-20 13:36:12 +0000 |
---|---|---|
committer | Benoit Jacob <jacob.benoit.1@gmail.com> | 2008-12-20 13:36:12 +0000 |
commit | 9e00d945439d801d3f4e33ed1ce57545e3310723 (patch) | |
tree | 0b26f164b72ea0fbf462ae63c41790219293f057 /test | |
parent | 21ab65e4b3b133a6550ec74ac76a0a629d07f104 (diff) |
* the Upper->UpperTriangular change
* finally get ei_add_test right
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 6 | ||||
-rw-r--r-- | test/sparse_solvers.cpp | 12 | ||||
-rw-r--r-- | test/triangular.cpp | 46 |
3 files changed, 33 insertions, 31 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index fd39dc82e..4255128ad 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -131,9 +131,11 @@ macro(ei_add_test testname) target_link_libraries(${targetname} ${EXTERNAL_LIBS}) if(${ARGC} GREATER 2) - if(ARGV2) + string(STRIP "${ARGV2}" ARGV2_stripped) + string(LENGTH "${ARGV2_stripped}" ARGV2_stripped_length) + if(${ARGV2_stripped_length} GREATER 0) target_link_libraries(${targetname} ${ARGV2}) - endif(ARGV2) + endif(${ARGV2_stripped_length} GREATER 0) endif(${ARGC} GREATER 2) if(WIN32) diff --git a/test/sparse_solvers.cpp b/test/sparse_solvers.cpp index c3050ce7d..da9a245a2 100644 --- a/test/sparse_solvers.cpp +++ b/test/sparse_solvers.cpp @@ -44,13 +44,13 @@ template<typename Scalar> void sparse_solvers(int rows, int cols) // lower initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeLowerTriangular, &zeroCoords, &nonzeroCoords); - VERIFY_IS_APPROX(refMat2.template marked<Lower>().solveTriangular(vec2), - m2.template marked<Lower>().solveTriangular(vec3)); + VERIFY_IS_APPROX(refMat2.template marked<LowerTriangular>().solveTriangular(vec2), + m2.template marked<LowerTriangular>().solveTriangular(vec3)); // upper initSparse<Scalar>(density, refMat2, m2, ForceNonZeroDiag|MakeUpperTriangular, &zeroCoords, &nonzeroCoords); - VERIFY_IS_APPROX(refMat2.template marked<Upper>().solveTriangular(vec2), - m2.template marked<Upper>().solveTriangular(vec3)); + VERIFY_IS_APPROX(refMat2.template marked<UpperTriangular>().solveTriangular(vec2), + m2.template marked<UpperTriangular>().solveTriangular(vec3)); // TODO test row major } @@ -70,7 +70,7 @@ template<typename Scalar> void sparse_solvers(int rows, int cols) refMat2.diagonal() *= 0.5; refMat2.llt().solve(b, &refX); - typedef SparseMatrix<Scalar,Lower|SelfAdjoint> SparseSelfAdjointMatrix; + typedef SparseMatrix<Scalar,LowerTriangular|SelfAdjoint> SparseSelfAdjointMatrix; x = b; SparseLLT<SparseSelfAdjointMatrix> (m2).solveInPlace(x); //VERIFY(refX.isApprox(x,test_precision<Scalar>()) && "LLT: default"); @@ -107,7 +107,7 @@ template<typename Scalar> void sparse_solvers(int rows, int cols) refMat2.diagonal() *= 0.5; refMat2.ldlt().solve(b, &refX); - typedef SparseMatrix<Scalar,Lower|SelfAdjoint> SparseSelfAdjointMatrix; + typedef SparseMatrix<Scalar,LowerTriangular|SelfAdjoint> SparseSelfAdjointMatrix; x = b; SparseLDLT<SparseSelfAdjointMatrix> ldlt(m2); if (ldlt.succeeded()) diff --git a/test/triangular.cpp b/test/triangular.cpp index 34afa7b3c..7021e0776 100644 --- a/test/triangular.cpp +++ b/test/triangular.cpp @@ -51,14 +51,14 @@ template<typename MatrixType> void triangular(const MatrixType& m) v2 = VectorType::Random(rows), vzero = VectorType::Zero(rows); - MatrixType m1up = m1.template part<Eigen::Upper>(); - MatrixType m2up = m2.template part<Eigen::Upper>(); + MatrixType m1up = m1.template part<Eigen::UpperTriangular>(); + MatrixType m2up = m2.template part<Eigen::UpperTriangular>(); if (rows*cols>1) { - VERIFY(m1up.isUpper()); - VERIFY(m2up.transpose().isLower()); - VERIFY(!m2.isLower()); + VERIFY(m1up.isUpperTriangular()); + VERIFY(m2up.transpose().isLowerTriangular()); + VERIFY(!m2.isLowerTriangular()); } // VERIFY_IS_APPROX(m1up.transpose() * m2, m1.upper().transpose().lower() * m2); @@ -66,20 +66,20 @@ template<typename MatrixType> void triangular(const MatrixType& m) // test overloaded operator+= r1.setZero(); r2.setZero(); - r1.template part<Eigen::Upper>() += m1; + r1.template part<Eigen::UpperTriangular>() += m1; r2 += m1up; VERIFY_IS_APPROX(r1,r2); // test overloaded operator= m1.setZero(); - m1.template part<Eigen::Upper>() = (m2.transpose() * m2).lazy(); + m1.template part<Eigen::UpperTriangular>() = (m2.transpose() * m2).lazy(); m3 = m2.transpose() * m2; - VERIFY_IS_APPROX(m3.template part<Eigen::Lower>().transpose(), m1); + VERIFY_IS_APPROX(m3.template part<Eigen::LowerTriangular>().transpose(), m1); // test overloaded operator= m1.setZero(); - m1.template part<Eigen::Lower>() = (m2.transpose() * m2).lazy(); - VERIFY_IS_APPROX(m3.template part<Eigen::Lower>(), m1); + m1.template part<Eigen::LowerTriangular>() = (m2.transpose() * m2).lazy(); + VERIFY_IS_APPROX(m3.template part<Eigen::LowerTriangular>(), m1); VERIFY_IS_APPROX(m3.template part<Diagonal>(), m3.diagonal().asDiagonal()); @@ -89,30 +89,30 @@ template<typename MatrixType> void triangular(const MatrixType& m) Transpose<MatrixType> trm4(m4); // test back and forward subsitution - m3 = m1.template part<Eigen::Lower>(); - VERIFY(m3.template marked<Eigen::Lower>().solveTriangular(m3).cwise().abs().isIdentity(test_precision<RealScalar>())); - VERIFY(m3.transpose().template marked<Eigen::Upper>() + m3 = m1.template part<Eigen::LowerTriangular>(); + VERIFY(m3.template marked<Eigen::LowerTriangular>().solveTriangular(m3).cwise().abs().isIdentity(test_precision<RealScalar>())); + VERIFY(m3.transpose().template marked<Eigen::UpperTriangular>() .solveTriangular(m3.transpose()).cwise().abs().isIdentity(test_precision<RealScalar>())); // check M * inv(L) using in place API m4 = m3; - m3.transpose().template marked<Eigen::Upper>().solveTriangularInPlace(trm4); + m3.transpose().template marked<Eigen::UpperTriangular>().solveTriangularInPlace(trm4); VERIFY(m4.cwise().abs().isIdentity(test_precision<RealScalar>())); - m3 = m1.template part<Eigen::Upper>(); - VERIFY(m3.template marked<Eigen::Upper>().solveTriangular(m3).cwise().abs().isIdentity(test_precision<RealScalar>())); - VERIFY(m3.transpose().template marked<Eigen::Lower>() + m3 = m1.template part<Eigen::UpperTriangular>(); + VERIFY(m3.template marked<Eigen::UpperTriangular>().solveTriangular(m3).cwise().abs().isIdentity(test_precision<RealScalar>())); + VERIFY(m3.transpose().template marked<Eigen::LowerTriangular>() .solveTriangular(m3.transpose()).cwise().abs().isIdentity(test_precision<RealScalar>())); // check M * inv(U) using in place API m4 = m3; - m3.transpose().template marked<Eigen::Lower>().solveTriangularInPlace(trm4); + m3.transpose().template marked<Eigen::LowerTriangular>().solveTriangularInPlace(trm4); VERIFY(m4.cwise().abs().isIdentity(test_precision<RealScalar>())); - m3 = m1.template part<Eigen::Upper>(); - VERIFY(m2.isApprox(m3 * (m3.template marked<Eigen::Upper>().solveTriangular(m2)), largerEps)); - m3 = m1.template part<Eigen::Lower>(); - VERIFY(m2.isApprox(m3 * (m3.template marked<Eigen::Lower>().solveTriangular(m2)), largerEps)); + m3 = m1.template part<Eigen::UpperTriangular>(); + VERIFY(m2.isApprox(m3 * (m3.template marked<Eigen::UpperTriangular>().solveTriangular(m2)), largerEps)); + m3 = m1.template part<Eigen::LowerTriangular>(); + VERIFY(m2.isApprox(m3 * (m3.template marked<Eigen::LowerTriangular>().solveTriangular(m2)), largerEps)); - VERIFY((m1.template part<Eigen::Upper>() * m2.template part<Eigen::Upper>()).isUpper()); + VERIFY((m1.template part<Eigen::UpperTriangular>() * m2.template part<Eigen::UpperTriangular>()).isUpperTriangular()); } |