@@ -15,48 +15,32 @@ function Base.copy(a::AnyAbstractSparseArray)
15
15
return copyto! (similar (a), a)
16
16
end
17
17
18
- function similar_sparsearray (a:: AnyAbstractSparseArray , unstored:: Unstored )
19
- return SparseArrayDOK (unstored)
20
- end
21
- function similar_sparsearray (a:: AnyAbstractSparseArray , T:: Type , ax:: Tuple )
22
- return similar_sparsearray (a, Unstored (unstoredsimilar (unstored (a), T, ax)))
23
- end
24
- function similar_sparsearray (a:: AnyAbstractSparseArray , T:: Type )
25
- return similar_sparsearray (a, Unstored (unstoredsimilar (unstored (a), T)))
26
- end
27
- function similar_sparsearray (a:: AnyAbstractSparseArray , ax:: Tuple )
28
- return similar_sparsearray (a, Unstored (unstoredsimilar (unstored (a), ax)))
29
- end
30
- function similar_sparsearray (a:: AnyAbstractSparseArray )
31
- return similar_sparsearray (a, Unstored (unstored (a)))
32
- end
33
-
34
18
function Base. similar (a:: AnyAbstractSparseArray , unstored:: Unstored )
35
- return similar_sparsearray (a , unstored)
19
+ return SparseArrayDOK (undef , unstored)
36
20
end
37
21
function Base. similar (a:: AnyAbstractSparseArray )
38
- return similar_sparsearray (a )
22
+ return similar (a, Unstored ( unstored (a)) )
39
23
end
40
24
function Base. similar (a:: AnyAbstractSparseArray , T:: Type )
41
- return similar_sparsearray (a, T )
25
+ return similar (a, Unstored ( unstoredsimilar ( unstored (a), T)) )
42
26
end
43
27
function Base. similar (a:: AnyAbstractSparseArray , ax:: Tuple )
44
- return similar_sparsearray (a, ax )
28
+ return similar (a, Unstored ( unstoredsimilar ( unstored (a), ax)) )
45
29
end
46
30
function Base. similar (a:: AnyAbstractSparseArray , T:: Type , ax:: Tuple )
47
- return similar_sparsearray (a, T, ax)
31
+ return similar (a, Unstored ( unstoredsimilar ( unstored (a), T, ax)) )
48
32
end
49
33
# Fix ambiguity error.
50
34
function Base. similar (a:: AnyAbstractSparseArray , T:: Type , ax:: Tuple{Int,Vararg{Int}} )
51
- return similar_sparsearray (a, T, ax)
35
+ return similar (a, Unstored ( unstoredsimilar ( unstored (a), T, ax)) )
52
36
end
53
37
# Fix ambiguity error.
54
38
function Base. similar (
55
39
a:: AnyAbstractSparseArray ,
56
40
T:: Type ,
57
41
ax:: Tuple{Union{Integer,Base.OneTo},Vararg{Union{Integer,Base.OneTo}}} ,
58
42
)
59
- return similar_sparsearray (a, T, ax)
43
+ return similar (a, Unstored ( unstoredsimilar ( unstored (a), T, ax)) )
60
44
end
61
45
62
46
using DerivableInterfaces: @derive
@@ -155,7 +139,7 @@ sparse(::Union{AbstractDict,AbstractDictionary}, dims...)
155
139
const AbstractDictOrDictionary = Union{AbstractDict,AbstractDictionary}
156
140
# checked constructor from data: use `setindex!` to validate/convert input
157
141
function sparse (storage:: AbstractDictOrDictionary , unstored:: AbstractArray )
158
- A = SparseArrayDOK (Unstored (unstored))
142
+ A = SparseArrayDOK (undef, Unstored (unstored))
159
143
for (i, v) in pairs (storage)
160
144
A[i] = v
161
145
end
@@ -186,10 +170,10 @@ The optional `T` argument specifies the element type, which defaults to `Float64
186
170
""" sparsezeros
187
171
188
172
function sparsezeros (:: Type{T} , unstored:: AbstractArray{<:Any,N} ) where {T,N}
189
- return SparseArrayDOK {T,N} (Unstored (unstored))
173
+ return SparseArrayDOK {T,N} (undef, Unstored (unstored))
190
174
end
191
175
function sparsezeros (unstored:: AbstractArray{T,N} ) where {T,N}
192
- return SparseArrayDOK {T,N} (Unstored (unstored))
176
+ return SparseArrayDOK {T,N} (undef, Unstored (unstored))
193
177
end
194
178
function sparsezeros (:: Type{T} , dims:: Dims ) where {T}
195
179
return sparsezeros (T, Zeros {T} (dims))
0 commit comments