@@ -15,48 +15,32 @@ function Base.copy(a::AnyAbstractSparseArray)
1515 return copyto! (similar (a), a)
1616end
1717
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-
3418function Base. similar (a:: AnyAbstractSparseArray , unstored:: Unstored )
35- return similar_sparsearray (a , unstored)
19+ return SparseArrayDOK (undef , unstored)
3620end
3721function Base. similar (a:: AnyAbstractSparseArray )
38- return similar_sparsearray (a )
22+ return similar (a, Unstored ( unstored (a)) )
3923end
4024function Base. similar (a:: AnyAbstractSparseArray , T:: Type )
41- return similar_sparsearray (a, T )
25+ return similar (a, Unstored ( unstoredsimilar ( unstored (a), T)) )
4226end
4327function Base. similar (a:: AnyAbstractSparseArray , ax:: Tuple )
44- return similar_sparsearray (a, ax )
28+ return similar (a, Unstored ( unstoredsimilar ( unstored (a), ax)) )
4529end
4630function 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)) )
4832end
4933# Fix ambiguity error.
5034function 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)) )
5236end
5337# Fix ambiguity error.
5438function Base. similar (
5539 a:: AnyAbstractSparseArray ,
5640 T:: Type ,
5741 ax:: Tuple{Union{Integer,Base.OneTo},Vararg{Union{Integer,Base.OneTo}}} ,
5842)
59- return similar_sparsearray (a, T, ax)
43+ return similar (a, Unstored ( unstoredsimilar ( unstored (a), T, ax)) )
6044end
6145
6246using DerivableInterfaces: @derive
@@ -155,7 +139,7 @@ sparse(::Union{AbstractDict,AbstractDictionary}, dims...)
155139const AbstractDictOrDictionary = Union{AbstractDict,AbstractDictionary}
156140# checked constructor from data: use `setindex!` to validate/convert input
157141function sparse (storage:: AbstractDictOrDictionary , unstored:: AbstractArray )
158- A = SparseArrayDOK (Unstored (unstored))
142+ A = SparseArrayDOK (undef, Unstored (unstored))
159143 for (i, v) in pairs (storage)
160144 A[i] = v
161145 end
@@ -186,10 +170,10 @@ The optional `T` argument specifies the element type, which defaults to `Float64
186170""" sparsezeros
187171
188172function 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))
190174end
191175function sparsezeros (unstored:: AbstractArray{T,N} ) where {T,N}
192- return SparseArrayDOK {T,N} (Unstored (unstored))
176+ return SparseArrayDOK {T,N} (undef, Unstored (unstored))
193177end
194178function sparsezeros (:: Type{T} , dims:: Dims ) where {T}
195179 return sparsezeros (T, Zeros {T} (dims))
0 commit comments