diff options
author | Gael Guennebaud <g.gael@free.fr> | 2015-12-01 14:38:47 +0100 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2015-12-01 14:38:47 +0100 |
commit | 0bb12fa61437e55ce563d076938593bebff7f0fc (patch) | |
tree | 0b78b95457df64d4addd62b77899d0d645e59e53 /test/lu.cpp | |
parent | 1663d15da7daf6cea77b6d0072849e77428db7a4 (diff) |
Add LU::transpose().solve() and LU::adjoint().solve() API.
Diffstat (limited to 'test/lu.cpp')
-rw-r--r-- | test/lu.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/lu.cpp b/test/lu.cpp index f753fc74a..f14435114 100644 --- a/test/lu.cpp +++ b/test/lu.cpp @@ -99,6 +99,9 @@ template<typename MatrixType> void lu_non_invertible() m3 = MatrixType::Random(rows,cols2); lu.template _solve_impl_transposed<false>(m2, m3); VERIFY_IS_APPROX(m2, m1.transpose()*m3); + m3 = MatrixType::Random(rows,cols2); + m3 = lu.transpose().solve(m2); + VERIFY_IS_APPROX(m2, m1.transpose()*m3); // test solve with conjugate transposed m3 = MatrixType::Random(rows,cols2); @@ -106,6 +109,9 @@ template<typename MatrixType> void lu_non_invertible() m3 = MatrixType::Random(rows,cols2); lu.template _solve_impl_transposed<true>(m2, m3); VERIFY_IS_APPROX(m2, m1.adjoint()*m3); + m3 = MatrixType::Random(rows,cols2); + m3 = lu.adjoint().solve(m2); + VERIFY_IS_APPROX(m2, m1.adjoint()*m3); } template<typename MatrixType> void lu_invertible() @@ -138,12 +144,20 @@ template<typename MatrixType> void lu_invertible() m2 = lu.solve(m3); VERIFY_IS_APPROX(m3, m1*m2); VERIFY_IS_APPROX(m2, lu.inverse()*m3); + // test solve with transposed lu.template _solve_impl_transposed<false>(m3, m2); VERIFY_IS_APPROX(m3, m1.transpose()*m2); + m3 = MatrixType::Random(size,size); + m3 = lu.transpose().solve(m2); + VERIFY_IS_APPROX(m2, m1.transpose()*m3); + // test solve with conjugate transposed lu.template _solve_impl_transposed<true>(m3, m2); VERIFY_IS_APPROX(m3, m1.adjoint()*m2); + m3 = MatrixType::Random(size,size); + m3 = lu.adjoint().solve(m2); + VERIFY_IS_APPROX(m2, m1.adjoint()*m3); // Regression test for Bug 302 MatrixType m4 = MatrixType::Random(size,size); @@ -168,12 +182,20 @@ template<typename MatrixType> void lu_partial_piv() m2 = plu.solve(m3); VERIFY_IS_APPROX(m3, m1*m2); VERIFY_IS_APPROX(m2, plu.inverse()*m3); + // test solve with transposed plu.template _solve_impl_transposed<false>(m3, m2); VERIFY_IS_APPROX(m3, m1.transpose()*m2); + m3 = MatrixType::Random(size,size); + m3 = plu.transpose().solve(m2); + VERIFY_IS_APPROX(m2, m1.transpose()*m3); + // test solve with conjugate transposed plu.template _solve_impl_transposed<true>(m3, m2); VERIFY_IS_APPROX(m3, m1.adjoint()*m2); + m3 = MatrixType::Random(size,size); + m3 = plu.adjoint().solve(m2); + VERIFY_IS_APPROX(m2, m1.adjoint()*m3); } template<typename MatrixType> void lu_verify_assert() |