From 0bb12fa61437e55ce563d076938593bebff7f0fc Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Tue, 1 Dec 2015 14:38:47 +0100 Subject: Add LU::transpose().solve() and LU::adjoint().solve() API. --- test/lu.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'test/lu.cpp') 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 void lu_non_invertible() m3 = MatrixType::Random(rows,cols2); lu.template _solve_impl_transposed(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 void lu_non_invertible() m3 = MatrixType::Random(rows,cols2); lu.template _solve_impl_transposed(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 void lu_invertible() @@ -138,12 +144,20 @@ template 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(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(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 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(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(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 void lu_verify_assert() -- cgit v1.2.3