diff --git a/src/minres.jl b/src/minres.jl index ba24ee184..7f4dcd7b9 100644 --- a/src/minres.jl +++ b/src/minres.jl @@ -341,10 +341,8 @@ function minres!(solver :: MinresSolver{T,FC,S}, A, b :: AbstractVector{FC}; # Stopping conditions based on user-provided tolerances. tired = iter ≥ itmax ill_cond_lim = (one(T) / Acond ≤ ctol) - # We must check that these stopping conditions work with preconditioners - # before we reuse them as stopping conditions. - # solved_lim = (test2 ≤ ε) - # zero_resid_lim = (test1 ≤ ε) + solved_lim = (test2 ≤ ε) + zero_resid_lim = MisI && (test1 ≤ ε) resid_decrease_lim = (rNorm ≤ ε) iter ≥ window && (fwd_err = err_lbnd ≤ etol * sqrt(xENorm²)) diff --git a/src/minres_qlp.jl b/src/minres_qlp.jl index 09c32c5bf..5f96a9616 100644 --- a/src/minres_qlp.jl +++ b/src/minres_qlp.jl @@ -411,7 +411,7 @@ function minres_qlp!(solver :: MinresQlpSolver{T,FC,S}, A, b :: AbstractVector{F # Stopping conditions based on user-provided tolerances. tired = iter ≥ itmax resid_decrease_lim = (rNorm ≤ ε) - zero_resid_lim = (backward ≤ ε) + zero_resid_lim = MisI && (backward ≤ ε) breakdown = βₖ₊₁ ≤ btol user_requested_exit = callback(solver) :: Bool