aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/sparse_solver.h
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2016-07-04 17:47:47 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2016-07-04 17:47:47 +0200
commitb39fd8217fbf98a921eaeb1f218632a09bda3f31 (patch)
treed75c9de33daecd7e5efa931ae34df2de6562d971 /test/sparse_solver.h
parentec02af1047091b45243e929ab8d723b202298040 (diff)
Fix nesting of SolveWithGuess, and add unit test.
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>