@@ -332,7 +332,7 @@ function sparse_IJ_sorted!{Ti<:Integer}(I::AbstractVector{Ti}, J::AbstractVector
332
332
333
333
m = m < 0 ? 0 : m
334
334
n = n < 0 ? 0 : n
335
- if isempty (V); return spzeros ( eltype (V),Ti, m,n); end
335
+ if isempty (V); return SparseMatrixCSC { eltype(V),Ti} ( m,n); end
336
336
337
337
cols = zeros (Ti, n+ 1 )
338
338
cols[1 ] = 1 # For cumsum purposes
@@ -970,25 +970,32 @@ sparse array will not contain any nonzero values. No storage will be allocated
970
970
for nonzero values during construction. The type defaults to `Float64` if not
971
971
specified.
972
972
"""
973
- spzeros (m:: Integer , n:: Integer ) = spzeros (Float64, m, n)
974
- spzeros (Tv:: Type , m:: Integer , n:: Integer ) = spzeros (Tv, Int, m, n)
975
- function spzeros (Tv:: Type , Ti:: Type , m:: Integer , n:: Integer )
976
- ((m < 0 ) || (n < 0 )) && throw (ArgumentError (" invalid Array dimensions" ))
977
- SparseMatrixCSC (m, n, ones (Ti, n+ 1 ), Array {Ti} (0 ), Array {Tv} (0 ))
978
- end
973
+ spzeros (m:: Integer , n:: Integer ) = zeros (SparseMatrixCSC, m, n)
974
+ spzeros (Tv:: Type , m:: Integer , n:: Integer ) = zeros (SparseMatrixCSC{Tv}, m, n)
975
+ spzeros (Tv:: Type , Ti:: Type , m:: Integer , n:: Integer ) = zeros (SparseMatrixCSC{Tv,Ti}, m, n)
979
976
977
+ function eye {Tv,Ti} (:: Type{SparseMatrixCSC{Tv,Ti}} , m:: Integer , n:: Integer )
978
+ check_array_size (m, n)
979
+ x = min (m,n)
980
+ rowval = collect (Ti, 1 : x)
981
+ colptr = Ti[rowval; fill (Ti (x+ 1 ), n+ 1 - x)]
982
+ nzval = ones (Tv, x)
983
+ return SparseMatrixCSC (m, n, colptr, rowval, nzval)
984
+ end
985
+ eye {Tv} (:: Type{SparseMatrixCSC{Tv}} , m:: Integer , n:: Integer ) = eye (SparseMatrixCSC{Tv,Int}, m, n)
986
+ eye (:: Type{SparseMatrixCSC} , m:: Integer , n:: Integer ) = eye (SparseMatrixCSC{Float64,Int}, m, n)
980
987
981
- speye (n:: Integer ) = speye (Float64 , n)
982
- speye (T:: Type , n:: Integer ) = speye (T , n, n)
983
- speye (m:: Integer , n:: Integer ) = speye (Float64 , m, n)
988
+ speye (n:: Integer ) = eye (SparseMatrixCSC , n)
989
+ speye (T:: Type , n:: Integer ) = eye (SparseMatrixCSC{T} , n, n)
990
+ speye (m:: Integer , n:: Integer ) = eye (SparseMatrixCSC , m, n)
984
991
985
992
"""
986
993
speye(S)
987
994
988
995
Create a sparse identity matrix with the same structure as that of `S`.
989
996
"""
990
- speye {T} (S:: SparseMatrixCSC{T} ) = speye (T , size (S, 1 ), size (S, 2 ))
991
- eye (S:: SparseMatrixCSC ) = speye ( S)
997
+ speye {T} (S:: SparseMatrixCSC{T} ) = eye (SparseMatrixCSC{T} , size (S, 1 ), size (S, 2 ))
998
+ eye {T<:SparseMatrixCSC} (S:: T ) = eye (T, S)
992
999
993
1000
"""
994
1001
speye([type,]m[,n])
@@ -997,14 +1004,7 @@ Create a sparse identity matrix of size `m x m`. When `n` is supplied,
997
1004
create a sparse identity matrix of size `m x n`. The type defaults to `Float64`
998
1005
if not specified.
999
1006
"""
1000
- function speye (T:: Type , m:: Integer , n:: Integer )
1001
- ((m < 0 ) || (n < 0 )) && throw (ArgumentError (" invalid Array dimensions" ))
1002
- x = min (m,n)
1003
- rowval = [1 : x;]
1004
- colptr = [rowval; fill (Int (x+ 1 ), n+ 1 - x)]
1005
- nzval = ones (T, x)
1006
- return SparseMatrixCSC (m, n, colptr, rowval, nzval)
1007
- end
1007
+ speye (T:: Type , m:: Integer , n:: Integer ) = eye (SparseMatrixCSC{T}, m, n)
1008
1008
1009
1009
function one {T} (S:: SparseMatrixCSC{T} )
1010
1010
m,n = size (S)
0 commit comments