Skip to content

Commit 21592db

Browse files
committed
additional test cases and bug fix
1 parent 4307da6 commit 21592db

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

stdlib/SparseArrays/src/linalg.jl

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -472,8 +472,7 @@ function _ldiv!(L::LowerTriangularPlain, B::StridedVecOrMat)
472472

473473
# find diagonal element
474474
ii = searchsortedfirst(ja, j, i1, i2, Base.Order.Forward)
475-
ii > i2 && ( ii = i1)
476-
jai = ja[ii]
475+
jai = ii > i2 ? zero(eltype(ja)) : ja[ii]
477476

478477
bj = B[joff + j]
479478
# check for zero pivot and divide with pivot
@@ -515,8 +514,7 @@ function _ldiv!(U::UpperTriangularPlain, B::StridedVecOrMat)
515514

516515
# find diagonal element
517516
ii = searchsortedlast(ja, j, i1, i2, Base.Order.Forward)
518-
ii < i1 && ( ii = i2)
519-
jai = ja[ii]
517+
jai = ii < i1 ? zero(eltype(ja)) : ja[ii]
520518

521519
bj = B[joff + j]
522520
# check for zero pivot and divide with pivot

stdlib/SparseArrays/test/sparse.jl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2312,6 +2312,13 @@ end
23122312
@test AW \ B MAW \ B
23132313
end
23142314
end
2315+
2316+
A = LowerTriangular(sparse([0 2.0;0 1]))
2317+
@test_throws SingularException(1) A \ ones(2)
2318+
A = UpperTriangular(sparse([1.0 0;0 0]))
2319+
@test_throws SingularException(2) A \ ones(2)
2320+
2321+
23152322
end
23162323

23172324
end # module

0 commit comments

Comments
 (0)