@@ -8,7 +8,8 @@ using BlockSparseArrays:
88 blocksparse,
99 blocktype,
1010 eachblockaxis
11- using FillArrays: Eye, SquareEye
11+ # using FillArrays: Eye, SquareEye
12+ using DiagonalArrays: Delta, δ
1213using JLArrays: JLArray
1314using KroneckerArrays: KroneckerArray, ⊗ , × , arg1, arg2, cartesianrange
1415using LinearAlgebra: norm
@@ -155,15 +156,15 @@ arrayts = (Array, JLArray)
155156 @test_broken exp (a)
156157end
157158
158- @testset " BlockSparseArraysExt, EyeKronecker blocks (arraytype=$arrayt , eltype=$elt )" for arrayt in
159- arrayts,
159+ @testset " BlockSparseArraysExt, DeltaKronecker blocks (arraytype=$arrayt , eltype=$elt )" for arrayt in
160+ arrayts,
160161 elt in elts
161162
162163 dev = adapt (arrayt)
163164 r = @constinferred blockrange ([2 × 2 , 3 × 3 ])
164165 d = Dict (
165- Block (1 , 1 ) => Eye { elt} (2 , 2 ) ⊗ dev (randn (elt, 2 , 2 )),
166- Block (2 , 2 ) => Eye { elt} (3 , 3 ) ⊗ dev (randn (elt, 3 , 3 )),
166+ Block (1 , 1 ) => δ ( elt, (2 , 2 ) ) ⊗ dev (randn (elt, 2 , 2 )),
167+ Block (2 , 2 ) => δ ( elt, (3 , 3 ) ) ⊗ dev (randn (elt, 3 , 3 )),
167168 )
168169 a = @constinferred dev (blocksparse (d, (r, r)))
169170 @test sprint (show, a) == sprint (show, Array (a))
@@ -175,17 +176,17 @@ end
175176 @test @constinferred (a[Block (2 , 2 )]) == dev (d[Block (2 , 2 )])
176177 @test @constinferred (a[Block (2 , 2 )]) isa valtype (d)
177178 @test @constinferred (iszero (a[Block (2 , 1 )]))
178- @test a[Block (2 , 1 )] == dev (Eye (3 , 2 ) ⊗ zeros (elt, 3 , 2 ))
179+ @test a[Block (2 , 1 )] == dev (δ (3 , 2 ) ⊗ zeros (elt, 3 , 2 ))
179180 @test a[Block (2 , 1 )] isa valtype (d)
180181 @test iszero (a[Block (1 , 2 )])
181- @test a[Block (1 , 2 )] == dev (Eye (2 , 3 ) ⊗ zeros (elt, 2 , 3 ))
182+ @test a[Block (1 , 2 )] == dev (δ (2 , 3 ) ⊗ zeros (elt, 2 , 3 ))
182183 @test a[Block (1 , 2 )] isa valtype (d)
183184
184185 # Slicing
185186 r = blockrange ([2 × 2 , 3 × 3 ])
186187 d = Dict (
187- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
188- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
188+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
189+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
189190 )
190191 a = dev (blocksparse (d, (r, r)))
191192 @test a[Block (2 , 2 )[(2 : 3 ) × (2 : 3 ), (2 : 3 ) × (2 : 3 )]] ==
@@ -200,19 +201,19 @@ end
200201 I = [I1, I2]
201202 b = a[I, I]
202203 @test b[Block (1 , 1 )] == a[Block (1 , 1 )[(1 : 2 ) × [1 ], (1 : 2 ) × [1 ]]]
203- @test arg1 (b[Block (1 , 1 )]) isa Eye
204+ @test arg1 (b[Block (1 , 1 )]) isa Delta
204205 @test iszero (b[Block (2 , 1 )])
205- @test arg1 (b[Block (2 , 1 )]) isa Eye
206+ @test arg1 (b[Block (2 , 1 )]) isa Delta
206207 @test iszero (b[Block (1 , 2 )])
207- @test arg1 (b[Block (1 , 2 )]) isa Eye
208+ @test arg1 (b[Block (1 , 2 )]) isa Delta
208209 @test b[Block (2 , 2 )] == a[Block (2 , 2 )[(1 : 3 ) × [1 , 3 ], (1 : 3 ) × [1 , 3 ]]]
209- @test arg1 (b[Block (2 , 2 )]) isa Eye
210+ @test arg1 (b[Block (2 , 2 )]) isa Delta
210211
211212 # Slicing
212213 r = blockrange ([2 × 2 , 3 × 3 ])
213214 d = Dict (
214- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
215- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
215+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
216+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
216217 )
217218 a = dev (blocksparse (d, (r, r)))
218219 i1 = Block (1 )[(1 : 2 ) × (1 : 2 )]
226227 # Slicing
227228 r = blockrange ([2 × 2 , 3 × 3 ])
228229 d = Dict (
229- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
230- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
230+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
231+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
231232 )
232233 a = dev (blocksparse (d, (r, r)))
233234 i1 = Block (1 )[(1 : 2 ) × (1 : 2 )]
240241
241242 r = blockrange ([2 × 2 , 3 × 3 ])
242243 d = Dict (
243- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
244- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
244+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
245+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
245246 )
246247 a = dev (blocksparse (d, (r, r)))
247248 b = @constinferred a * a
250251
251252 r = blockrange ([2 × 2 , 3 × 3 ])
252253 d = Dict (
253- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
254- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
254+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
255+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
255256 )
256257 a = dev (blocksparse (d, (r, r)))
257258 # Type inference is broken for this operation.
262263
263264 r = blockrange ([2 × 2 , 3 × 3 ])
264265 d = Dict (
265- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
266- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
266+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
267+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
267268 )
268269 a = dev (blocksparse (d, (r, r)))
269270 # Type inference is broken for this operation.
274275
275276 r = blockrange ([2 × 2 , 3 × 3 ])
276277 d = Dict (
277- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
278- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
278+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
279+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
279280 )
280281 a = dev (blocksparse (d, (r, r)))
281282 # Type inference is broken for this operation.
@@ -286,16 +287,16 @@ end
286287
287288 r = blockrange ([2 × 2 , 3 × 3 ])
288289 d = Dict (
289- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
290- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
290+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
291+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
291292 )
292293 a = dev (blocksparse (d, (r, r)))
293294 @test @constinferred (norm (a)) ≈ norm (Array (a))
294295
295296 r = blockrange ([2 × 2 , 3 × 3 ])
296297 d = Dict (
297- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
298- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
298+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
299+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
299300 )
300301 a = dev (blocksparse (d, (r, r)))
301302 if arrayt === Array
307308
308309 r = blockrange ([2 × 2 , 3 × 3 ])
309310 d = Dict (
310- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
311- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
311+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
312+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
312313 )
313314 a = dev (blocksparse (d, (r, r)))
314315 u, s, v = svd_compact (a)
321322
322323 r = blockrange ([2 × 2 , 3 × 3 ])
323324 d = Dict (
324- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
325- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
325+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
326+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
326327 )
327328 a = dev (blocksparse (d, (r, r)))
328329 if arrayt === Array
334335
335336 r = blockrange ([2 × 2 , 3 × 3 ])
336337 d = Dict (
337- Block (1 , 1 ) => dev (Eye { elt} (2 , 2 ) ⊗ randn (elt, 2 , 2 )),
338- Block (2 , 2 ) => dev (Eye { elt} (3 , 3 ) ⊗ randn (elt, 3 , 3 )),
338+ Block (1 , 1 ) => dev (δ ( elt, (2 , 2 ) ) ⊗ randn (elt, 2 , 2 )),
339+ Block (2 , 2 ) => dev (δ ( elt, (3 , 3 ) ) ⊗ randn (elt, 3 , 3 )),
339340 )
340341 a = dev (blocksparse (d, (r, r)))
341342 # Broken operations
348349 r = @constinferred blockrange ([2 × 2 , 3 × 3 ])
349350 rng = StableRNG (1234 )
350351 d = Dict (
351- Block (1 , 1 ) => Eye { elt} (2 , 2 ) ⊗ randn (rng, elt, 2 , 2 ),
352- Block (2 , 2 ) => Eye { elt} (3 , 3 ) ⊗ randn (rng, elt, 3 , 3 ),
352+ Block (1 , 1 ) => δ ( elt, (2 , 2 ) ) ⊗ randn (rng, elt, 2 , 2 ),
353+ Block (2 , 2 ) => δ ( elt, (3 , 3 ) ) ⊗ randn (rng, elt, 3 , 3 ),
353354 )
354355 a = @constinferred dev (blocksparse (d, (r, r)))
355356 if arrayt === Array
@@ -361,10 +362,10 @@ end
361362 end
362363
363364 @testset " Block deficient" begin
364- da = Dict (Block (1 , 1 ) => Eye { elt} (2 , 2 ) ⊗ dev (randn (elt, 2 , 2 )))
365+ da = Dict (Block (1 , 1 ) => δ ( elt, (2 , 2 ) ) ⊗ dev (randn (elt, 2 , 2 )))
365366 a = @constinferred dev (blocksparse (da, (r, r)))
366367
367- db = Dict (Block (2 , 2 ) => Eye { elt} (3 , 3 ) ⊗ dev (randn (elt, 3 , 3 )))
368+ db = Dict (Block (2 , 2 ) => δ ( elt, (3 , 3 ) ) ⊗ dev (randn (elt, 3 , 3 )))
368369 b = @constinferred dev (blocksparse (db, (r, r)))
369370
370371 @test Array (a + b) ≈ Array (a) + Array (b)
0 commit comments