Skip to content

Commit 84bfa12

Browse files
martinholtersjohanmon
authored andcommitted
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 4f46050 commit 84bfa12

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
@@ -2045,7 +2045,7 @@ function _findr(op, A, region, Tv)
20452045
throw(ArgumentError("array slices must be non-empty"))
20462046
else
20472047
ri = Base.reduced_indices0(A, region)
2048-
return (similar(A, ri), zeros(Ti, ri))
2048+
return (zeros(Tv, ri), zeros(Ti, ri))
20492049
end
20502050
end
20512051

stdlib/SparseArrays/test/sparse.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,10 +1338,10 @@ end
13381338
@testset "argmax, argmin, findmax, findmin" begin
13391339
S = sprand(100,80, 0.5)
13401340
A = Array(S)
1341-
@test argmax(S) == argmax(A)
1342-
@test argmin(S) == argmin(A)
1343-
@test findmin(S) == findmin(A)
1344-
@test findmax(S) == findmax(A)
1341+
@test @inferred(argmax(S)) == argmax(A)
1342+
@test @inferred(argmin(S)) == argmin(A)
1343+
@test @inferred(findmin(S)) == findmin(A)
1344+
@test @inferred(findmax(S)) == findmax(A)
13451345
for region in [(1,), (2,), (1,2)], m in [findmax, findmin]
13461346
@test m(S, dims=region) == m(A, dims=region)
13471347
end

0 commit comments

Comments
 (0)