Open packquickly opened 1 year ago
I mentioned here https://github.com/JuliaLinearAlgebra/IterativeSolvers.jl/issues/338 that GMRES was failing silently from stagnation. Turns out BiCGStab is also failing silently from (some form of) breakdown.
Not so surprising that this fails given how I'm (mis)using the algorithm, but the failure should not be silent.
Reproducing code:
import IterativeSolvers: bicgstabl import LinearAlgebra: cond, norm for problem_dim in [25, 100] succeeded = 0 for i = 1:100 condition_number = Inf matrix = nothing while condition_number > 1000 matrix = randn(Float64, (problem_dim, problem_dim)) condition_number = cond(matrix) end true_vec = randn(Float64, (problem_dim,)) b = matrix * true_vec julia_soln = bicgstabl(matrix, b) residual_norm = norm(julia_soln - true_vec) succeeded += (residual_norm < 1) # very loose tolerance! end println("problem dim: $problem_dim. succeeded: $succeeded") end
I mentioned here https://github.com/JuliaLinearAlgebra/IterativeSolvers.jl/issues/338 that GMRES was failing silently from stagnation. Turns out BiCGStab is also failing silently from (some form of) breakdown.
Not so surprising that this fails given how I'm (mis)using the algorithm, but the failure should not be silent.
Reproducing code: