Skip to content

Commit 7b22adb

Browse files
jebejKristofferC
authored andcommitted
Fix sparse type parameter (fixes #22110) (#22111)
* Fix type sparse type parameter (fixes #22110) * No brackets for singular type param
1 parent 75541d2 commit 7b22adb

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

base/sparse/sparsematrix.jl

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,10 @@ function copy!(A::SparseMatrixCSC, B::SparseMatrixCSC)
292292
return A
293293
end
294294

295-
similar(S::SparseMatrixCSC, Tv::Type = eltype(S)) = SparseMatrixCSC(S.m, S.n, copy(S.colptr), copy(S.rowval), Vector{Tv}(length(S.nzval)))
295+
function similar(S::SparseMatrixCSC, ::Type{Tv} = eltype(S)) where Tv
296+
SparseMatrixCSC(S.m, S.n, copy(S.colptr), copy(S.rowval), Vector{Tv}(length(S.nzval)))
297+
end
298+
296299
function similar(S::SparseMatrixCSC, ::Type{Tv}, ::Type{Ti}) where {Tv,Ti}
297300
new_colptr = copy!(similar(S.colptr, Ti), S.colptr)
298301
new_rowval = copy!(similar(S.rowval, Ti), S.rowval)
@@ -1369,16 +1372,18 @@ julia> spzeros(Float32, 4)
13691372
```
13701373
"""
13711374
spzeros(m::Integer, n::Integer) = spzeros(Float64, m, n)
1372-
spzeros(Tv::Type, m::Integer, n::Integer) = spzeros(Tv, Int, m, n)
1373-
function spzeros(Tv::Type, Ti::Type, m::Integer, n::Integer)
1375+
spzeros(::Type{Tv}, m::Integer, n::Integer) where {Tv} = spzeros(Tv, Int, m, n)
1376+
function spzeros(::Type{Tv}, ::Type{Ti}, m::Integer, n::Integer) where {Tv, Ti}
13741377
((m < 0) || (n < 0)) && throw(ArgumentError("invalid Array dimensions"))
13751378
SparseMatrixCSC(m, n, ones(Ti, n+1), Vector{Ti}(0), Vector{Tv}(0))
13761379
end
13771380
# de-splatting variant
1378-
spzeros(Tv::Type, Ti::Type, sz::Tuple{Integer,Integer}) = spzeros(Tv, Ti, sz[1], sz[2])
1381+
function spzeros(::Type{Tv}, ::Type{Ti}, sz::Tuple{Integer,Integer}) where {Tv, Ti}
1382+
spzeros(Tv, Ti, sz[1], sz[2])
1383+
end
13791384

13801385
speye(n::Integer) = speye(Float64, n)
1381-
speye(T::Type, n::Integer) = speye(T, n, n)
1386+
speye(::Type{T}, n::Integer) where {T} = speye(T, n, n)
13821387
speye(m::Integer, n::Integer) = speye(Float64, m, n)
13831388

13841389
"""
@@ -1418,7 +1423,7 @@ if not specified.
14181423
`sparse(α*I, m, n)` can be used to efficiently create a sparse
14191424
multiple `α` of the identity matrix.
14201425
"""
1421-
speye(T::Type, m::Integer, n::Integer) = speye_scaled(T, oneunit(T), m, n)
1426+
speye(::Type{T}, m::Integer, n::Integer) where {T} = speye_scaled(T, oneunit(T), m, n)
14221427

14231428
function one(S::SparseMatrixCSC{T}) where T
14241429
m,n = size(S)
@@ -1428,7 +1433,7 @@ end
14281433

14291434
speye_scaled(diag, m::Integer, n::Integer) = speye_scaled(typeof(diag), diag, m, n)
14301435

1431-
function speye_scaled(T, diag, m::Integer, n::Integer)
1436+
function speye_scaled(::Type{T}, diag, m::Integer, n::Integer) where T
14321437
((m < 0) || (n < 0)) && throw(ArgumentError("invalid array dimensions"))
14331438
if iszero(diag)
14341439
return SparseMatrixCSC(m, n, ones(Int, n+1), Vector{Int}(0), Vector{T}(0))
@@ -1509,7 +1514,7 @@ Base.reducedim_initarray0{R}(A::SparseMatrixCSC, region, v0, ::Type{R}) =
15091514
fill!(similar(dims->Array{R}(dims), Base.reduced_indices0(A,region)), v0)
15101515

15111516
# General mapreduce
1512-
function _mapreducezeros(f, op, T::Type, nzeros::Int, v0)
1517+
function _mapreducezeros(f, op, ::Type{T}, nzeros::Int, v0) where T
15131518
nzeros == 0 && return v0
15141519

15151520
# Reduce over first zero
@@ -1543,9 +1548,9 @@ function Base._mapreduce{T}(f, op, ::Base.IndexCartesian, A::SparseMatrixCSC{T})
15431548
end
15441549

15451550
# Specialized mapreduce for +/*
1546-
_mapreducezeros(f, ::typeof(+), T::Type, nzeros::Int, v0) =
1551+
_mapreducezeros(f, ::typeof(+), ::Type{T}, nzeros::Int, v0) where {T} =
15471552
nzeros == 0 ? v0 : f(zero(T))*nzeros + v0
1548-
_mapreducezeros(f, ::typeof(*), T::Type, nzeros::Int, v0) =
1553+
_mapreducezeros(f, ::typeof(*), ::Type{T}, nzeros::Int, v0) where {T} =
15491554
nzeros == 0 ? v0 : f(zero(T))^nzeros * v0
15501555

15511556
function Base._mapreduce{T}(f, op::typeof(*), A::SparseMatrixCSC{T})

0 commit comments

Comments
 (0)