diff options
author | Gael Guennebaud <g.gael@free.fr> | 2016-07-04 17:47:47 +0200 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2016-07-04 17:47:47 +0200 |
commit | b39fd8217fbf98a921eaeb1f218632a09bda3f31 (patch) | |
tree | d75c9de33daecd7e5efa931ae34df2de6562d971 /test/sparse_solver.h | |
parent | ec02af1047091b45243e929ab8d723b202298040 (diff) |
Fix nesting of SolveWithGuess, and add unit test.
Diffstat (limited to 'test/sparse_solver.h')
-rw-r--r-- | test/sparse_solver.h | 16 |
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> |