Skip to content

Commit 0e02381

Browse files
committed
More constructors and tests
1 parent cabfea7 commit 0e02381

File tree

3 files changed

+45
-52
lines changed

3 files changed

+45
-52
lines changed

NDTensors/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "NDTensors"
22
uuid = "23ae76d9-e61a-49c4-8f12-3f1a16adf9cf"
33
authors = ["Matthew Fishman <[email protected]>"]
4-
version = "0.3.67"
4+
version = "0.3.68"
55

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

NDTensors/src/lib/BlockSparseArrays/src/blocksparsearray/blocksparsearray.jl

Lines changed: 36 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,30 @@ function BlockSparseArray{T,N,A}(
7575
return BlockSparseArray{T,N,A}(blocks, axes)
7676
end
7777

78+
function BlockSparseArray{T,N,A}(
79+
axes::Vararg{AbstractUnitRange,N}
80+
) where {T,N,A<:AbstractArray{T,N}}
81+
return BlockSparseArray{T,N,A}(axes)
82+
end
83+
84+
function BlockSparseArray{T,N,A}(
85+
dims::Tuple{Vararg{Vector{Int},N}}
86+
) where {T,N,A<:AbstractArray{T,N}}
87+
return BlockSparseArray{T,N,A}(blockedrange.(dims))
88+
end
89+
90+
# Fix ambiguity error.
91+
function BlockSparseArray{T,0,A}(axes::Tuple{}) where {T,A<:AbstractArray{T,0}}
92+
blocks = default_blocks(A, axes)
93+
return BlockSparseArray{T,0,A}(blocks, axes)
94+
end
95+
96+
function BlockSparseArray{T,N,A}(
97+
dims::Vararg{Vector{Int},N}
98+
) where {T,N,A<:AbstractArray{T,N}}
99+
return BlockSparseArray{T,N,A}(dims)
100+
end
101+
78102
function BlockSparseArray{T,N}(axes::Tuple{Vararg{AbstractUnitRange,N}}) where {T,N}
79103
return BlockSparseArray{T,N,default_arraytype(T, axes)}(axes)
80104
end
@@ -119,56 +143,25 @@ function BlockSparseArray{T}() where {T}
119143
return BlockSparseArray{T}(())
120144
end
121145

122-
function BlockSparseArray{T,N,A}(
123-
::UndefInitializer, dims::Tuple
124-
) where {T,N,A<:AbstractArray{T,N}}
125-
return BlockSparseArray{T,N,A}(dims)
126-
end
127-
128146
# undef
129-
function BlockSparseArray{T,N}(
130-
::UndefInitializer, axes::Tuple{Vararg{AbstractUnitRange,N}}
131-
) where {T,N}
132-
return BlockSparseArray{T,N}(axes)
133-
end
134-
135-
function BlockSparseArray{T,N}(
136-
::UndefInitializer, axes::Vararg{AbstractUnitRange,N}
137-
) where {T,N}
138-
return BlockSparseArray{T,N}(axes)
139-
end
140-
141-
function BlockSparseArray{T,N}(
142-
::UndefInitializer, dims::Tuple{Vararg{Vector{Int},N}}
143-
) where {T,N}
144-
return BlockSparseArray{T,N}(dims)
145-
end
146-
147-
function BlockSparseArray{T,N}(::UndefInitializer, dims::Vararg{Vector{Int},N}) where {T,N}
148-
return BlockSparseArray{T,N}(dims)
149-
end
150-
151-
function BlockSparseArray{T}(
152-
::UndefInitializer, axes::Tuple{Vararg{AbstractUnitRange}}
153-
) where {T}
154-
return BlockSparseArray{T}(axes)
155-
end
156-
157-
function BlockSparseArray{T}(::UndefInitializer, axes::Vararg{AbstractUnitRange}) where {T}
158-
return BlockSparseArray{T}(axes...)
147+
function BlockSparseArray{T,N,A,Blocks}(
148+
::UndefInitializer, args...
149+
) where {T,N,A<:AbstractArray{T,N},Blocks<:AbstractArray{A,N}}
150+
return BlockSparseArray{T,N,A,Blocks}(args...)
159151
end
160152

161-
# Fix ambiguity error.
162-
function BlockSparseArray{T}(::UndefInitializer) where {T}
163-
return BlockSparseArray{T}()
153+
function BlockSparseArray{T,N,A}(
154+
::UndefInitializer, args...
155+
) where {T,N,A<:AbstractArray{T,N}}
156+
return BlockSparseArray{T,N,A}(args...)
164157
end
165158

166-
function BlockSparseArray{T}(::UndefInitializer, dims::Tuple{Vararg{Vector{Int}}}) where {T}
167-
return BlockSparseArray{T}(dims)
159+
function BlockSparseArray{T,N}(::UndefInitializer, args...) where {T,N}
160+
return BlockSparseArray{T,N}(args...)
168161
end
169162

170-
function BlockSparseArray{T}(::UndefInitializer, dims::Vararg{Vector{Int}}) where {T}
171-
return BlockSparseArray{T}(dims...)
163+
function BlockSparseArray{T}(::UndefInitializer, args...) where {T}
164+
return BlockSparseArray{T}(args...)
172165
end
173166

174167
# Base `AbstractArray` interface

NDTensors/src/lib/BlockSparseArrays/test/test_basics.jl

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,10 +84,10 @@ using .NDTensorsTestUtils: devices_list, is_supported_eltype
8484
BlockSparseArray{elt},
8585
BlockSparseArray{elt,2},
8686
BlockSparseMatrix{elt},
87-
## BlockSparseArray{elt,2,Matrix{elt}},
88-
## BlockSparseMatrix{elt,Matrix{elt}},
89-
## BlockSparseArray{elt,2,Matrix{elt},SparseMatrixDOK{Matrix{elt}}},
90-
## BlockSparseMatrix{elt,Matrix{elt},SparseMatrixDOK{Matrix{elt}}},
87+
BlockSparseArray{elt,2,Matrix{elt}},
88+
BlockSparseMatrix{elt,Matrix{elt}},
89+
## BlockSparseArray{elt,2,Matrix{elt},SparseMatrixDOK{Matrix{elt}}}, # TODO
90+
## BlockSparseMatrix{elt,Matrix{elt},SparseMatrixDOK{Matrix{elt}}}, # TODO
9191
)
9292
for args in (
9393
bs,
@@ -116,10 +116,10 @@ using .NDTensorsTestUtils: devices_list, is_supported_eltype
116116
BlockSparseArray{elt},
117117
BlockSparseArray{elt,1},
118118
BlockSparseVector{elt},
119-
## BlockSparseArray{elt,1,Vector{elt}},
120-
## BlockSparseVector{elt,Vector{elt}},
121-
## BlockSparseArray{elt,1,Vector{elt},SparseVectorDOK{Vector{elt}}},
122-
## BlockSparseVector{elt,Vector{elt},SparseVectorDOK{Vector{elt}}},
119+
BlockSparseArray{elt,1,Vector{elt}},
120+
BlockSparseVector{elt,Vector{elt}},
121+
## BlockSparseArray{elt,1,Vector{elt},SparseVectorDOK{Vector{elt}}}, # TODO
122+
## BlockSparseVector{elt,Vector{elt},SparseVectorDOK{Vector{elt}}}, # TODO
123123
)
124124
for args in (
125125
bs,

0 commit comments

Comments
 (0)