From 2aab794c004027d008d6b0b64165bf1961d5d2bb Mon Sep 17 00:00:00 2001 From: Yi Kong Date: Fri, 25 Feb 2022 16:32:14 +0800 Subject: Upgrade eigen to 3.4.0 Steps: * Removed common files between Android copy and the matching upstream copy * Obtained latest upstream tarball (see README.version) * Extracted over the directory Bug: 148287349 Test: presubmit Change-Id: Iee2744719075fdf000b315e973645923da766111 --- test/triangular.cpp | 61 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 53 insertions(+), 8 deletions(-) (limited to 'test/triangular.cpp') diff --git a/test/triangular.cpp b/test/triangular.cpp index b96856486..981a0d071 100644 --- a/test/triangular.cpp +++ b/test/triangular.cpp @@ -7,9 +7,35 @@ // Public License v. 2.0. If a copy of the MPL was not distributed // with this file, You can obtain one at http://mozilla.org/MPL/2.0/. +#ifdef EIGEN_TEST_PART_100 +# define EIGEN_NO_DEPRECATED_WARNING +#endif + #include "main.h" +template void triangular_deprecated(const MatrixType &m) +{ + Index rows = m.rows(); + Index cols = m.cols(); + MatrixType m1, m2, m3, m4; + m1.setRandom(rows,cols); + m2.setRandom(rows,cols); + m3 = m1; m4 = m2; + // deprecated method: + m1.template triangularView().swap(m2); + // use this method instead: + m3.template triangularView().swap(m4.template triangularView()); + VERIFY_IS_APPROX(m1,m3); + VERIFY_IS_APPROX(m2,m4); + // deprecated method: + m1.template triangularView().swap(m4); + // use this method instead: + m3.template triangularView().swap(m2.template triangularView()); + VERIFY_IS_APPROX(m1,m3); + VERIFY_IS_APPROX(m2,m4); +} + template void triangular_square(const MatrixType& m) { @@ -19,8 +45,8 @@ template void triangular_square(const MatrixType& m) RealScalar largerEps = 10*test_precision(); - typename MatrixType::Index rows = m.rows(); - typename MatrixType::Index cols = m.cols(); + Index rows = m.rows(); + Index cols = m.cols(); MatrixType m1 = MatrixType::Random(rows, cols), m2 = MatrixType::Random(rows, cols), @@ -68,7 +94,7 @@ template void triangular_square(const MatrixType& m) while (numext::abs2(m1(i,i))(); Transpose trm4(m4); - // test back and forward subsitution with a vector as the rhs + // test back and forward substitution with a vector as the rhs m3 = m1.template triangularView(); VERIFY(v2.isApprox(m3.adjoint() * (m1.adjoint().template triangularView().solve(v2)), largerEps)); m3 = m1.template triangularView(); @@ -109,11 +135,12 @@ template void triangular_square(const MatrixType& m) // test swap m1.setOnes(); m2.setZero(); - m2.template triangularView().swap(m1); + m2.template triangularView().swap(m1.template triangularView()); m3.setZero(); m3.template triangularView().setOnes(); VERIFY_IS_APPROX(m2,m3); - + VERIFY_RAISES_STATIC_ASSERT(m1.template triangularView().swap(m2.template triangularView())); + m1.setRandom(); m3 = m1.template triangularView(); Matrix m5(cols, internal::random(1,20)); m5.setRandom(); @@ -129,12 +156,27 @@ template void triangular_square(const MatrixType& m) VERIFY_IS_APPROX(m1.template selfadjointView().diagonal(), m1.diagonal()); + m3.setRandom(); + const MatrixType& m3c(m3); + VERIFY( is_same_type(m3c.template triangularView(),m3.template triangularView().template conjugateIf()) ); + VERIFY( is_same_type(m3c.template triangularView().conjugate(),m3.template triangularView().template conjugateIf()) ); + VERIFY_IS_APPROX(m3.template triangularView().template conjugateIf().toDenseMatrix(), + m3.conjugate().template triangularView().toDenseMatrix()); + VERIFY_IS_APPROX(m3.template triangularView().template conjugateIf().toDenseMatrix(), + m3.template triangularView().toDenseMatrix()); + + VERIFY( is_same_type(m3c.template selfadjointView(),m3.template selfadjointView().template conjugateIf()) ); + VERIFY( is_same_type(m3c.template selfadjointView().conjugate(),m3.template selfadjointView().template conjugateIf()) ); + VERIFY_IS_APPROX(m3.template selfadjointView().template conjugateIf().toDenseMatrix(), + m3.conjugate().template selfadjointView().toDenseMatrix()); + VERIFY_IS_APPROX(m3.template selfadjointView().template conjugateIf().toDenseMatrix(), + m3.template selfadjointView().toDenseMatrix()); + } template void triangular_rect(const MatrixType& m) { - typedef const typename MatrixType::Index Index; typedef typename MatrixType::Scalar Scalar; typedef typename NumTraits::Real RealScalar; enum { Rows = MatrixType::RowsAtCompileTime, Cols = MatrixType::ColsAtCompileTime }; @@ -209,7 +251,7 @@ template void triangular_rect(const MatrixType& m) // test swap m1.setOnes(); m2.setZero(); - m2.template triangularView().swap(m1); + m2.template triangularView().swap(m1.template triangularView()); m3.setZero(); m3.template triangularView().setOnes(); VERIFY_IS_APPROX(m2,m3); @@ -221,7 +263,7 @@ void bug_159() EIGEN_UNUSED_VARIABLE(m) } -void test_triangular() +EIGEN_DECLARE_TEST(triangular) { int maxsize = (std::min)(EIGEN_TEST_MAX_SIZE,20); for(int i = 0; i < g_repeat ; i++) @@ -241,6 +283,9 @@ void test_triangular() CALL_SUBTEST_9( triangular_rect(MatrixXcf(r, c)) ); CALL_SUBTEST_5( triangular_rect(MatrixXcd(r, c)) ); CALL_SUBTEST_6( triangular_rect(Matrix(r, c)) ); + + CALL_SUBTEST_100( triangular_deprecated(Matrix()) ); + CALL_SUBTEST_100( triangular_deprecated(MatrixXd(r,c)) ); } CALL_SUBTEST_1( bug_159() ); -- cgit v1.2.3