Skip to content

Commit f1116c0

Browse files
committed
Add test and fix case for multiplying size 0 arrays
1 parent 2a2b51a commit f1116c0

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/abstractsparsearrayinterface.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ end
156156
@interface interface::AbstractSparseArrayInterface function Base.map!(
157157
f, a_dest::AbstractArray, as::AbstractArray...
158158
)
159+
isempty(a_dest) && return a_dest # special case to avoid trying to access empty array
159160
indices = if !preserves_unstored(f, a_dest, as...)
160161
eachindex(a_dest)
161162
elseif any(a -> a_dest !== a, as)

test/test_linalg.jl

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,22 @@ const rng = StableRNG(123)
2424
check2 = mul!(Array(C), Array(A), Array(B), α, β)
2525
@test mul!(copy(C), A, B, α, β) check2
2626
end
27+
28+
# test empty matrix
29+
szA = (2, 0)
30+
szB = (0, 2)
31+
szC = (szA[1], szB[2])
32+
for density in 0.0:0.25:1
33+
C = sparserand(rng, T, szC; density)
34+
A = sparserand(rng, T, szA; density)
35+
B = sparserand(rng, T, szB; density)
36+
37+
check1 = mul!(Array(C), Array(A), Array(B))
38+
@test mul!(copy(C), A, B) check1
39+
40+
α = rand(rng, T)
41+
β = rand(rng, T)
42+
check2 = mul!(Array(C), Array(A), Array(B), α, β)
43+
@test mul!(copy(C), A, B, α, β) check2
44+
end
2745
end

0 commit comments

Comments
 (0)