| #ifndef TEST_SOLVERBASE_H | 
 | #define TEST_SOLVERBASE_H | 
 |  | 
 | template<typename DstType, typename RhsType, typename MatrixType, typename SolverType> | 
 | void check_solverbase(const MatrixType& matrix, const SolverType& solver, Index rows, Index cols, Index cols2) | 
 | { | 
 |   // solve | 
 |   DstType m2               = DstType::Random(cols,cols2); | 
 |   RhsType m3               = matrix*m2; | 
 |   DstType solver_solution  = DstType::Random(cols,cols2); | 
 |   solver._solve_impl(m3, solver_solution); | 
 |   VERIFY_IS_APPROX(m3, matrix*solver_solution); | 
 |   solver_solution          = DstType::Random(cols,cols2); | 
 |   solver_solution          = solver.solve(m3); | 
 |   VERIFY_IS_APPROX(m3, matrix*solver_solution); | 
 |   // test solve with transposed | 
 |   m3                       = RhsType::Random(rows,cols2); | 
 |   m2                       = matrix.transpose()*m3; | 
 |   RhsType solver_solution2 = RhsType::Random(rows,cols2); | 
 |   solver.template _solve_impl_transposed<false>(m2, solver_solution2); | 
 |   VERIFY_IS_APPROX(m2, matrix.transpose()*solver_solution2); | 
 |   solver_solution2         = RhsType::Random(rows,cols2); | 
 |   solver_solution2         = solver.transpose().solve(m2); | 
 |   VERIFY_IS_APPROX(m2, matrix.transpose()*solver_solution2); | 
 |   // test solve with conjugate transposed | 
 |   m3                       = RhsType::Random(rows,cols2); | 
 |   m2                       = matrix.adjoint()*m3; | 
 |   solver_solution2         = RhsType::Random(rows,cols2); | 
 |   solver.template _solve_impl_transposed<true>(m2, solver_solution2); | 
 |   VERIFY_IS_APPROX(m2, matrix.adjoint()*solver_solution2); | 
 |   solver_solution2         = RhsType::Random(rows,cols2); | 
 |   solver_solution2         = solver.adjoint().solve(m2); | 
 |   VERIFY_IS_APPROX(m2, matrix.adjoint()*solver_solution2); | 
 |   // test with temporary expression as rhs | 
 |   m2 = DstType::Random(cols,cols2); | 
 |   solver_solution = solver.solve(matrix*m2); | 
 |   VERIFY_IS_APPROX(matrix*m2, matrix*solver_solution); | 
 | } | 
 |  | 
 | #endif // TEST_SOLVERBASE_H |