@@ -3,8 +3,11 @@ using DerivableInterfaces: permuteddims
33using DiagonalArrays:
44 DiagonalArrays,
55 Delta,
6+ DeltaMatrix,
67 DiagonalArray,
78 DiagonalMatrix,
9+ ScaledDelta,
10+ ScaledDeltaMatrix,
811 δ,
912 delta,
1013 diagindices,
@@ -116,6 +119,22 @@ using LinearAlgebra: Diagonal, mul!
116119 @test diagview (b) ≡ diagview (a)
117120 @test size (b) === (4 , 2 , 3 )
118121 end
122+ @testset " Broadcasting" begin
123+ a = DiagonalArray (randn (elt, 2 ), (2 , 3 ))
124+ b = DiagonalArray (randn (elt, 2 ), (2 , 3 ))
125+ c = a .+ 2 .* b
126+ @test c ≈ Array (a) + 2 * Array (b)
127+ # Non-zero-preserving functions not supported yet.
128+ @test_broken a .+ 2
129+
130+ c = DiagonalArray {elt} (undef, (2 , 3 ))
131+ c .= a .+ 2 .* b
132+ @test c ≈ Array (a) + 2 * Array (b)
133+
134+ # Non-zero-preserving functions not supported yet.
135+ c = DiagonalArray {elt} (undef, (2 , 3 ))
136+ @test_broken c .= a .+ 2
137+ end
119138 @testset " Matrix multiplication" begin
120139 a1 = DiagonalArray {elt} (undef, (2 , 3 ))
121140 a1[1 , 1 ] = 11
@@ -197,7 +216,9 @@ using LinearAlgebra: Diagonal, mul!
197216 @test eltype (a) === elt′
198217 @test diaglength (a) == 2
199218 @test a isa DiagonalArray{elt′,2 }
219+ @test a isa DiagonalMatrix{elt′}
200220 @test a isa Delta{elt′,2 }
221+ @test a isa DeltaMatrix{elt′}
201222 @test size (a) == (2 , 2 )
202223 @test diaglength (a) == 2
203224 @test storedlength (a) == 2
@@ -211,11 +232,17 @@ using LinearAlgebra: Diagonal, mul!
211232 # TODO : Fix this. Mapping doesn't preserve
212233 # the diagonal structure properly.
213234 # https://github.com/ITensor/DiagonalArrays.jl/issues/7
214- @test_broken diagview (a′) isa Fill
235+ @test diagview (a′) isa Fill{promote_type (Int, elt′)}
236+ @test a′ isa ScaledDelta{promote_type (Int, elt′),2 }
237+ @test a′ isa ScaledDeltaMatrix{promote_type (Int, elt′)}
215238
216239 b = randn (elt, (2 , 3 ))
217240 a_dest = a * b
218241 @test a_dest ≈ Array (a) * Array (b)
242+
243+ a_dest = a * a
244+ @test a_dest ≈ Array (a) * Array (a)
245+ @test diagview (a_dest) isa Ones{elt′}
219246 end
220247 end
221248 end
0 commit comments