@@ -157,15 +157,55 @@ end
157157end
158158
159159@testset " generic_matvecmul for vectors of vectors" begin
160- u = [[1 , 2 ], [3 , 4 ]]
160+ @testset " matrix of scalars" begin
161+ u = [[1 , 2 ], [3 , 4 ]]
162+ A = [1 2 ; 3 4 ]
163+ v = [[0 , 0 ], [0 , 0 ]]
164+ Au = [[7 , 10 ], [15 , 22 ]]
165+ @test A * u == Au
166+ mul! (v, A, u)
167+ @test v == Au
168+ mul! (v, A, u, 2 , - 1 )
169+ @test v == Au
170+ end
171+
172+ @testset " matrix of matrices" begin
173+ u = [[1 , 2 ], [3 , 4 ]]
174+ A = Matrix {Matrix{Int}} (undef, 2 , 2 )
175+ A[1 , 1 ] = [1 2 ; 3 4 ]
176+ A[1 , 2 ] = [5 6 ; 7 8 ]
177+ A[2 , 1 ] = [9 10 ; 11 12 ]
178+ A[2 , 2 ] = [13 14 ; 15 16 ]
179+ v = [[0 , 0 ], [0 , 0 ]]
180+ Au = [[44 , 64 ], [124 , 144 ]]
181+ @test A * u == Au
182+ mul! (v, A, u)
183+ @test v == Au
184+ mul! (v, A, u, 2 , - 1 )
185+ @test v == Au
186+ end
187+ end
188+
189+ @testset " generic_matmatmul for matrices of vectors" begin
190+ B = Matrix {Vector{Int}} (undef, 2 , 2 )
191+ B[1 , 1 ] = [1 , 2 ]
192+ B[2 , 1 ] = [3 , 4 ]
193+ B[1 , 2 ] = [5 , 6 ]
194+ B[2 , 2 ] = [7 , 8 ]
161195 A = [1 2 ; 3 4 ]
162- v = [[0 , 0 ], [0 , 0 ]]
163- Au = [[7 , 10 ], [15 , 22 ]]
164- @test A * u == Au
165- mul! (v, A, u)
166- @test v == Au
167- mul! (v, A, u, 2 , 1 )
168- @test v == [[15 , 22 ], [33 , 48 ]]
196+ C = Matrix {Vector{Int}} (undef, 2 , 2 )
197+ AB = Matrix {Vector{Int}} (undef, 2 , 2 )
198+ AB[1 , 1 ] = [7 , 10 ]
199+ AB[2 , 1 ] = [15 , 22 ]
200+ AB[1 , 2 ] = [19 , 22 ]
201+ AB[2 , 2 ] = [43 , 50 ]
202+ @test A * B == AB
203+ mul! (C, A, B)
204+ @test C == AB
205+ mul! (C, A, B, 2 , - 1 )
206+ @test C == AB
207+ LinearAlgebra. _generic_matmatmul! (C, ' N' , ' N' , A, B, LinearAlgebra. MulAddMul (2 , - 1 ))
208+ @test C == AB
169209end
170210
171211@testset " fallbacks & such for BlasFloats" begin
0 commit comments