Skip to content

Commit e55ee1d

Browse files
committed
Fix a type-instability in sparse findmin/findmax
The helper function `_findr` would usually return a `Vector` as first argument, but would use a `SparseMatrixCSC` in the empty case. Fix by always using `Vector`.
1 parent 33237ef commit e55ee1d

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

stdlib/SparseArrays/src/sparsematrix.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2043,7 +2043,7 @@ function _findr(op, A, region, Tv)
20432043
throw(ArgumentError("array slices must be non-empty"))
20442044
else
20452045
ri = Base.reduced_indices0(A, region)
2046-
return (similar(A, ri), zeros(Ti, ri))
2046+
return (zeros(Tv, ri), zeros(Ti, ri))
20472047
end
20482048
end
20492049

stdlib/SparseArrays/test/sparse.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1305,10 +1305,10 @@ end
13051305
@testset "argmax, argmin, findmax, findmin" begin
13061306
S = sprand(100,80, 0.5)
13071307
A = Array(S)
1308-
@test argmax(S) == argmax(A)
1309-
@test argmin(S) == argmin(A)
1310-
@test findmin(S) == findmin(A)
1311-
@test findmax(S) == findmax(A)
1308+
@test @inferred(argmax(S)) == argmax(A)
1309+
@test @inferred(argmin(S)) == argmin(A)
1310+
@test @inferred(findmin(S)) == findmin(A)
1311+
@test @inferred(findmax(S)) == findmax(A)
13121312
for region in [(1,), (2,), (1,2)], m in [findmax, findmin]
13131313
@test m(S, dims=region) == m(A, dims=region)
13141314
end

0 commit comments

Comments
 (0)