diff options
author | Miao Wang <miaowang@google.com> | 2017-03-06 13:45:08 -0800 |
---|---|---|
committer | Miao Wang <miaowang@google.com> | 2017-03-07 16:30:11 -0800 |
commit | 2b8756b6f1de65d3f8bffab45be6c44ceb7411fc (patch) | |
tree | 0488797fc544fe977bec6418c73445759f052482 /test/diagonal.cpp | |
parent | 353bba589de58014a35f8f3666b7b96353c300f8 (diff) | |
download | eigen-2b8756b6f1de65d3f8bffab45be6c44ceb7411fc.tar.gz |
Rebase Eigen to 3.3.3.
Bug: 34161771
Test: mm and RenderScript BLAS tests pass on bullhead.
Change-Id: Ia448b3202708e395fed9c783ea4323289d69dbef
Diffstat (limited to 'test/diagonal.cpp')
-rw-r--r-- | test/diagonal.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/test/diagonal.cpp b/test/diagonal.cpp index 53814a588..c1546e97d 100644 --- a/test/diagonal.cpp +++ b/test/diagonal.cpp @@ -20,6 +20,8 @@ template<typename MatrixType> void diagonal(const MatrixType& m) MatrixType m1 = MatrixType::Random(rows, cols), m2 = MatrixType::Random(rows, cols); + Scalar s1 = internal::random<Scalar>(); + //check diagonal() VERIFY_IS_APPROX(m1.diagonal(), m1.transpose().diagonal()); m2.diagonal() = 2 * m1.diagonal(); @@ -58,6 +60,26 @@ template<typename MatrixType> void diagonal(const MatrixType& m) VERIFY_IS_APPROX(m2.template diagonal<N2>(), static_cast<Scalar>(2) * m1.diagonal(N2)); m2.diagonal(N2)[0] *= 3; VERIFY_IS_APPROX(m2.diagonal(N2)[0], static_cast<Scalar>(6) * m1.diagonal(N2)[0]); + + m2.diagonal(N2).x() = s1; + VERIFY_IS_APPROX(m2.diagonal(N2).x(), s1); + m2.diagonal(N2).coeffRef(0) = Scalar(2)*s1; + VERIFY_IS_APPROX(m2.diagonal(N2).coeff(0), Scalar(2)*s1); + } +} + +template<typename MatrixType> void diagonal_assert(const MatrixType& m) { + Index rows = m.rows(); + Index cols = m.cols(); + + MatrixType m1 = MatrixType::Random(rows, cols); + + if (rows>=2 && cols>=2) + { + VERIFY_RAISES_ASSERT( m1 += m1.diagonal() ); + VERIFY_RAISES_ASSERT( m1 -= m1.diagonal() ); + VERIFY_RAISES_ASSERT( m1.array() *= m1.diagonal().array() ); + VERIFY_RAISES_ASSERT( m1.array() /= m1.diagonal().array() ); } } @@ -74,4 +96,6 @@ void test_diagonal() CALL_SUBTEST_1( diagonal(MatrixXf(internal::random<int>(1,EIGEN_TEST_MAX_SIZE), internal::random<int>(1,EIGEN_TEST_MAX_SIZE))) ); CALL_SUBTEST_1( diagonal(Matrix<float,Dynamic,4>(3, 4)) ); } + + CALL_SUBTEST_1( diagonal_assert(MatrixXf(internal::random<int>(1,EIGEN_TEST_MAX_SIZE), internal::random<int>(1,EIGEN_TEST_MAX_SIZE))) ); } |