@@ -292,7 +292,10 @@ function copy!(A::SparseMatrixCSC, B::SparseMatrixCSC)
292
292
return A
293
293
end
294
294
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
+
296
299
function similar (S:: SparseMatrixCSC , :: Type{Tv} , :: Type{Ti} ) where {Tv,Ti}
297
300
new_colptr = copy! (similar (S. colptr, Ti), S. colptr)
298
301
new_rowval = copy! (similar (S. rowval, Ti), S. rowval)
@@ -1369,16 +1372,18 @@ julia> spzeros(Float32, 4)
1369
1372
```
1370
1373
"""
1371
1374
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}
1374
1377
((m < 0 ) || (n < 0 )) && throw (ArgumentError (" invalid Array dimensions" ))
1375
1378
SparseMatrixCSC (m, n, ones (Ti, n+ 1 ), Vector {Ti} (0 ), Vector {Tv} (0 ))
1376
1379
end
1377
1380
# 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
1379
1384
1380
1385
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)
1382
1387
speye (m:: Integer , n:: Integer ) = speye (Float64, m, n)
1383
1388
1384
1389
"""
@@ -1418,7 +1423,7 @@ if not specified.
1418
1423
`sparse(α*I, m, n)` can be used to efficiently create a sparse
1419
1424
multiple `α` of the identity matrix.
1420
1425
"""
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)
1422
1427
1423
1428
function one (S:: SparseMatrixCSC{T} ) where T
1424
1429
m,n = size (S)
@@ -1428,7 +1433,7 @@ end
1428
1433
1429
1434
speye_scaled (diag, m:: Integer , n:: Integer ) = speye_scaled (typeof (diag), diag, m, n)
1430
1435
1431
- function speye_scaled (T , diag, m:: Integer , n:: Integer )
1436
+ function speye_scaled (:: Type{T} , diag, m:: Integer , n:: Integer ) where T
1432
1437
((m < 0 ) || (n < 0 )) && throw (ArgumentError (" invalid array dimensions" ))
1433
1438
if iszero (diag)
1434
1439
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}) =
1509
1514
fill! (similar (dims-> Array {R} (dims), Base. reduced_indices0 (A,region)), v0)
1510
1515
1511
1516
# General mapreduce
1512
- function _mapreducezeros (f, op, T :: Type , nzeros:: Int , v0)
1517
+ function _mapreducezeros (f, op, :: Type{T} , nzeros:: Int , v0) where T
1513
1518
nzeros == 0 && return v0
1514
1519
1515
1520
# Reduce over first zero
@@ -1543,9 +1548,9 @@ function Base._mapreduce{T}(f, op, ::Base.IndexCartesian, A::SparseMatrixCSC{T})
1543
1548
end
1544
1549
1545
1550
# Specialized mapreduce for +/*
1546
- _mapreducezeros (f, :: typeof (+ ), T :: Type , nzeros:: Int , v0) =
1551
+ _mapreducezeros (f, :: typeof (+ ), :: Type{T} , nzeros:: Int , v0) where {T} =
1547
1552
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} =
1549
1554
nzeros == 0 ? v0 : f (zero (T))^ nzeros * v0
1550
1555
1551
1556
function Base. _mapreduce {T} (f, op:: typeof (* ), A:: SparseMatrixCSC{T} )
0 commit comments