aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/sparse_solver.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/sparse_solver.h')
-rw-r--r--test/sparse_solver.h16
1 files changed, 14 insertions, 2 deletions
diff --git a/test/sparse_solver.h b/test/sparse_solver.h
index 8cf35bef7..fd6199f3e 100644
--- a/test/sparse_solver.h
+++ b/test/sparse_solver.h
@@ -13,12 +13,24 @@
template<typename Solver, typename Rhs, typename Guess,typename Result>
void solve_with_guess(IterativeSolverBase<Solver>& solver, const MatrixBase<Rhs>& b, const Guess& g, Result &x) {
- x = solver.derived().solveWithGuess(b.derived(),g);
+ if(internal::random<bool>())
+ {
+ // With a temporary through evaluator<SolveWithGuess>
+ x = solver.derived().solveWithGuess(b,g) + Result::Zero(x.rows(), x.cols());
+ }
+ else
+ {
+ // direct evaluation within x through Assignment<Result,SolveWithGuess>
+ x = solver.derived().solveWithGuess(b.derived(),g);
+ }
}
template<typename Solver, typename Rhs, typename Guess,typename Result>
void solve_with_guess(SparseSolverBase<Solver>& solver, const MatrixBase<Rhs>& b, const Guess& , Result& x) {
- x = solver.derived().solve(b);
+ if(internal::random<bool>())
+ x = solver.derived().solve(b) + Result::Zero(x.rows(), x.cols());
+ else
+ x = solver.derived().solve(b);
}
template<typename Solver, typename Rhs, typename Guess,typename Result>