diff --git a/base/sparse/sparsematrix.jl b/base/sparse/sparsematrix.jl index c369c7690cedc..37edaaf9449ad 100644 --- a/base/sparse/sparsematrix.jl +++ b/base/sparse/sparsematrix.jl @@ -621,7 +621,8 @@ end function maximum{T}(A::SparseMatrixCSC{T}) isempty(A) && throw(ArgumentError("argument must not be empty")) - max(maximum(A.nzval), zero(T)) + m = maximum(A.nzval) + nfilled(A)!=length(A) ? max(m,zero(T)) : m end maximum{T}(A::SparseMatrixCSC{T}, region) = @@ -629,7 +630,8 @@ maximum{T}(A::SparseMatrixCSC{T}, region) = function minimum{T}(A::SparseMatrixCSC{T}) isempty(A) && throw(ArgumentError("argument must not be empty")) - min(minimum(A.nzval), zero(T)) + m = minimum(A.nzval) + nfilled(A)!=length(A) ? min(m,zero(T)) : m end minimum{T}(A::SparseMatrixCSC{T}, region) = diff --git a/test/sparse.jl b/test/sparse.jl index f21cc42db0e98..d4dfe8080e907 100644 --- a/test/sparse.jl +++ b/test/sparse.jl @@ -226,3 +226,6 @@ end @test maximum(P, (1,)) == [1.0 2.0 3.0] @test maximum(P, (2,)) == reshape([1.0,2.0,3.0],3,1) @test maximum(P, (1,2)) == reshape([3.0],1,1) + +@test maximum(sparse(-ones(3,3))) == -1 +@test minimum(sparse(ones(3,3))) == 1