Skip to content

Commit beeb6d7

Browse files
authored
Remove eltype assumption from ldiv!(LowerTriangular(SparseMatrixCSC{Tv,Ti), ...) (#40174)
1 parent d92b0d8 commit beeb6d7

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

stdlib/SparseArrays/src/linalg.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,7 @@ function _ldiv!(L::LowerTriangularPlain, B::StridedVecOrMat)
646646
for k = 1:ncolB
647647
for j = 1:nrowB
648648
i1 = ia[j]
649-
i2 = ia[j + 1] - 1
649+
i2 = ia[j + 1] - one(eltype(ia))
650650

651651
# find diagonal element
652652
ii = searchsortedfirst(ja, j, i1, i2, Base.Order.Forward)
@@ -688,7 +688,7 @@ function _ldiv!(U::UpperTriangularPlain, B::StridedVecOrMat)
688688
for k = 1:ncolB
689689
for j = nrowB:-1:1
690690
i1 = ia[j]
691-
i2 = ia[j + 1] - 1
691+
i2 = ia[j + 1] - one(eltype(ia))
692692

693693
# find diagonal element
694694
ii = searchsortedlast(ja, j, i1, i2, Base.Order.Forward)

stdlib/SparseArrays/test/sparsevector.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,6 +1050,10 @@ end
10501050
@test y == Af'x2f
10511051
end
10521052
end
1053+
@testset "ldiv with different element types (#40171)" begin
1054+
sA = sparse(Int16.(1:4), Int16.(1:4), ones(4))
1055+
@test all(ldiv!(LowerTriangular(sA), ones(4)) .≈ 1.)
1056+
end
10531057
@testset "ldiv ops with triangular matrices and sparse vecs (#14005)" begin
10541058
m = 10
10551059
sparsefloatvecs = SparseVector[sprand(m, 0.4) for k in 1:3]

0 commit comments

Comments
 (0)