Skip to content

Commit 457a392

Browse files
authored
Update similar and Unstored constructors (#66)
1 parent 29445ae commit 457a392

File tree

3 files changed

+18
-34
lines changed

3 files changed

+18
-34
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "SparseArraysBase"
22
uuid = "0d5efcca-f356-4864-8770-e1ed8d78f208"
33
authors = ["ITensor developers <[email protected]> and contributors"]
4-
version = "0.7.0"
4+
version = "0.7.1"
55

66
[deps]
77
Accessors = "7d9f7c33-5ae7-4f3b-8dc6-eff91059b697"

src/abstractsparsearray.jl

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,48 +15,32 @@ function Base.copy(a::AnyAbstractSparseArray)
1515
return copyto!(similar(a), a)
1616
end
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-
3418
function Base.similar(a::AnyAbstractSparseArray, unstored::Unstored)
35-
return similar_sparsearray(a, unstored)
19+
return SparseArrayDOK(undef, unstored)
3620
end
3721
function Base.similar(a::AnyAbstractSparseArray)
38-
return similar_sparsearray(a)
22+
return similar(a, Unstored(unstored(a)))
3923
end
4024
function Base.similar(a::AnyAbstractSparseArray, T::Type)
41-
return similar_sparsearray(a, T)
25+
return similar(a, Unstored(unstoredsimilar(unstored(a), T)))
4226
end
4327
function Base.similar(a::AnyAbstractSparseArray, ax::Tuple)
44-
return similar_sparsearray(a, ax)
28+
return similar(a, Unstored(unstoredsimilar(unstored(a), ax)))
4529
end
4630
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)))
4832
end
4933
# Fix ambiguity error.
5034
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)))
5236
end
5337
# Fix ambiguity error.
5438
function 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)))
6044
end
6145

6246
using DerivableInterfaces: @derive
@@ -155,7 +139,7 @@ sparse(::Union{AbstractDict,AbstractDictionary}, dims...)
155139
const AbstractDictOrDictionary = Union{AbstractDict,AbstractDictionary}
156140
# checked constructor from data: use `setindex!` to validate/convert input
157141
function 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

188172
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))
190174
end
191175
function sparsezeros(unstored::AbstractArray{T,N}) where {T,N}
192-
return SparseArrayDOK{T,N}(Unstored(unstored))
176+
return SparseArrayDOK{T,N}(undef, Unstored(unstored))
193177
end
194178
function sparsezeros(::Type{T}, dims::Dims) where {T}
195179
return sparsezeros(T, Zeros{T}(dims))

src/sparsearraydok.jl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,18 @@ unstored(a::SparseArrayDOK) = a.unstored
2626
Base.size(a::SparseArrayDOK) = size(unstored(a))
2727
Base.axes(a::SparseArrayDOK) = axes(unstored(a))
2828

29-
function SparseArrayDOK{T,N}(a::Unstored) where {T,N}
29+
function SparseArrayDOK{T,N}(::UndefInitializer, a::Unstored) where {T,N}
3030
storage = DOKStorage{T,N}()
3131
return _SparseArrayDOK(storage, parent(a))
3232
end
33-
function SparseArrayDOK{T}(a::Unstored) where {T}
34-
return SparseArrayDOK{T,ndims(a)}(a)
33+
function SparseArrayDOK{T}(::UndefInitializer, a::Unstored) where {T}
34+
return SparseArrayDOK{T,ndims(a)}(undef, a)
3535
end
36-
function SparseArrayDOK{<:Any,N}(a::Unstored) where {N}
36+
function SparseArrayDOK{<:Any,N}(::UndefInitializer, a::Unstored) where {N}
3737
return SparseArrayDOK{eltype(a),N}(a)
3838
end
39-
function SparseArrayDOK(a::Unstored)
40-
return SparseArrayDOK{eltype(a),ndims(a)}(a)
39+
function SparseArrayDOK(::UndefInitializer, a::Unstored)
40+
return SparseArrayDOK{eltype(a),ndims(a)}(undef, a)
4141
end
4242

4343
# Constructors
@@ -53,7 +53,7 @@ the length or number of `dims`.
5353
SparseArrayDOK{T,N}(::UndefInitializer, dims...)
5454

5555
function SparseArrayDOK{T,N}(::UndefInitializer, ax::Tuple{Vararg{Any,N}}) where {T,N}
56-
return SparseArrayDOK{T,N}(Unstored(Zeros{T}(ax)))
56+
return SparseArrayDOK{T,N}(undef, Unstored(Zeros{T}(ax)))
5757
end
5858
function SparseArrayDOK{T}(::UndefInitializer, ax::Tuple{Vararg{Any,N}}) where {T,N}
5959
return SparseArrayDOK{T,N}(undef, ax)

0 commit comments

Comments
 (0)