JuliaSparse / SparseArrays.jl

SparseArrays.jl is a Julia stdlib
https://sparsearrays.juliasparse.org/
Other
88 stars 51 forks source link

`ldiv` of `LUFactorization` can throw `SingluarException` #517

Open oscardssmith opened 6 months ago

oscardssmith commented 6 months ago
using LinearAlgebra, SparseArrays
F = lu(spzeros(2,2), check=false)
F \ rand(2)
ERROR: SingularException(0)
Stacktrace:
  [1] umferror(status::Int32)
    @ SparseArrays.UMFPACK ~/.julia/juliaup/julia-1.10.1+0.x64.linux.gnu/share/julia/stdlib/v1.10/SparseArrays/src/solvers/umfpack.jl:105
  [2] macro expansion
    @ ~/.julia/juliaup/julia-1.10.1+0.x64.linux.gnu/share/julia/stdlib/v1.10/SparseArrays/src/solvers/umfpack.jl:665 [inlined]
  [3] macro expansion
    @ ./lock.jl:267 [inlined]
  [4] solve!(x::Vector{…}, lu::SparseArrays.UMFPACK.UmfpackLU{…}, b::Vector{…}, typ::Int64; workspace::SparseArrays.UMFPACK.UmfpackWS{…})
    @ SparseArrays.UMFPACK ~/.julia/juliaup/julia-1.10.1+0.x64.linux.gnu/share/julia/stdlib/v1.10/SparseArrays/src/solvers/umfpack.jl:661
  [5] solve!
    @ ~/.julia/juliaup/julia-1.10.1+0.x64.linux.gnu/share/julia/stdlib/v1.10/SparseArrays/src/solvers/umfpack.jl:646 [inlined]
  [6] _AqldivB_kernel!
    @ ~/.julia/juliaup/julia-1.10.1+0.x64.linux.gnu/share/julia/stdlib/v1.10/SparseArrays/src/solvers/umfpack.jl:968 [inlined]
  [7] _Aq_ldiv_B!
    @ ~/.julia/juliaup/julia-1.10.1+0.x64.linux.gnu/share/julia/stdlib/v1.10/SparseArrays/src/solvers/umfpack.jl:963 [inlined]
  [8] ldiv!
    @ ~/.julia/juliaup/julia-1.10.1+0.x64.linux.gnu/share/julia/stdlib/v1.10/SparseArrays/src/solvers/umfpack.jl:946 [inlined]
  [9] ldiv!
    @ ~/.julia/juliaup/julia-1.10.1+0.x64.linux.gnu/share/julia/stdlib/v1.10/SparseArrays/src/solvers/umfpack.jl:933 [inlined]
 [10] \(F::SparseArrays.UMFPACK.UmfpackLU{Float64, Int64}, B::Vector{Float64})
    @ LinearAlgebra ~/.julia/juliaup/julia-1.10.1+0.x64.linux.gnu/share/julia/stdlib/v1.10/LinearAlgebra/src/factorization.jl:143
 [11] top-level scope
    @ REPL[11]:1
Some type information was truncated. Use `show(err)` to see complete types.

@ChrisRackauckas told me I should ping @rayegun

rayegun commented 6 months ago

What are you expecting this to do, we had this conversation. You must check the factorization object before an ldiv if you turn off exceptions on the factorization