@@ -403,6 +403,23 @@ Random.seed!(1)
403
403
404
404
end
405
405
406
+ @testset " kron (issue #40595)" begin
407
+ # custom array type to test that kron on Diagonal matrices preserves types of the parents if possible
408
+ struct KronTestArray{T, N, AT} <: AbstractArray{T, N}
409
+ data:: AT
410
+ end
411
+ KronTestArray (data:: AbstractArray ) = KronTestArray {eltype(data), ndims(data), typeof(data)} (data)
412
+ Base. size (A:: KronTestArray ) = size (A. data)
413
+ LinearAlgebra. kron (A:: KronTestArray , B:: KronTestArray ) = KronTestArray (kron (A. data, B. data))
414
+ Base. getindex (K:: KronTestArray{<:Any,N} , i:: Vararg{Int,N} ) where {N} = K. data[i... ]
415
+
416
+ A = KronTestArray ([1 , 2 , 3 ]);
417
+ @test kron (A, A) isa KronTestArray
418
+ Ad = Diagonal (A);
419
+ @test kron (Ad, Ad). diag isa KronTestArray
420
+ @test kron (Ad, Ad). diag == kron ([1 , 2 , 3 ], [1 , 2 , 3 ])
421
+ end
422
+
406
423
@testset " svdvals and eigvals (#11120/#11247)" begin
407
424
D = Diagonal (Matrix{Float64}[randn (3 ,3 ), randn (2 ,2 )])
408
425
@test sort ([svdvals (D)... ;], rev = true ) ≈ svdvals ([D. diag[1 ] zeros (3 ,2 ); zeros (2 ,3 ) D. diag[2 ]])
0 commit comments