From 2ab1405c9c3522f3dd5dcd96342e9681855ae78d Mon Sep 17 00:00:00 2001 From: Raghvendra Gupta Date: Thu, 27 Dec 2018 12:13:32 +0530 Subject: [PATCH] Fixed sprand for dimensions of unusual integer type (#30516) Fixes #30502 --- stdlib/SparseArrays/src/sparsematrix.jl | 2 ++ stdlib/SparseArrays/test/sparse.jl | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/stdlib/SparseArrays/src/sparsematrix.jl b/stdlib/SparseArrays/src/sparsematrix.jl index 2b6af39ab079b..7324b368b05a2 100644 --- a/stdlib/SparseArrays/src/sparsematrix.jl +++ b/stdlib/SparseArrays/src/sparsematrix.jl @@ -1443,6 +1443,7 @@ julia> sprand(Float64, 3, 0.75) """ function sprand(r::AbstractRNG, m::Integer, n::Integer, density::AbstractFloat, rfn::Function, ::Type{T}=eltype(rfn(r,1))) where T + m,n = Int(m), Int(n) N = m*n N == 0 && return spzeros(T,m,n) N == 1 && return rand(r) <= density ? sparse([1], [1], rfn(r,1)) : spzeros(T,1,1) @@ -1453,6 +1454,7 @@ end function sprand(m::Integer, n::Integer, density::AbstractFloat, rfn::Function, ::Type{T}=eltype(rfn(1))) where T + m,n = Int(m), Int(n) N = m*n N == 0 && return spzeros(T,m,n) N == 1 && return rand() <= density ? sparse([1], [1], rfn(1)) : spzeros(T,1,1) diff --git a/stdlib/SparseArrays/test/sparse.jl b/stdlib/SparseArrays/test/sparse.jl index 00eeefd120937..7784c67baf078 100644 --- a/stdlib/SparseArrays/test/sparse.jl +++ b/stdlib/SparseArrays/test/sparse.jl @@ -343,6 +343,11 @@ end end end +@testset "Issue #30502" begin + @test nnz(sprand(UInt8(16), UInt8(16), 1.0)) == 256 + @test nnz(sprand(UInt8(16), UInt8(16), 1.0, ones)) == 256 +end + @testset "kronecker product" begin for (m,n) in ((5,10), (13,8), (14,10)) a = sprand(m, 5, 0.4); a_d = Matrix(a)