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