@@ -171,6 +171,37 @@ mod tests {
171171 assert_eq ! ( result, expected) ;
172172 }
173173
174+ #[ test]
175+ fn test_single_threaded_matmul_4x4 ( ) {
176+ let m = 4 ;
177+ let k = 4 ;
178+ let n = 4 ;
179+
180+ // Define matrix `a` (4x4) in row-major order
181+ let a = vec ! [
182+ 1.0 , 2.0 , 3.0 , 4.0 , 5.0 , 6.0 , 7.0 , 8.0 , 9.0 , 10.0 , 11.0 , 12.0 , 13.0 , 14.0 , 15.0 , 16.0 ,
183+ ] ;
184+
185+ // Define matrix `b` (4x4) in row-major order
186+ let b = vec ! [
187+ 17.0 , 18.0 , 19.0 , 20.0 , 21.0 , 22.0 , 23.0 , 24.0 , 25.0 , 26.0 , 27.0 , 28.0 , 29.0 , 30.0 ,
188+ 31.0 , 32.0 ,
189+ ] ;
190+
191+ // Expected result (4x4) after multiplying `a` and `b`
192+ let expected = vec ! [
193+ 250.0 , 260.0 , 270.0 , 280.0 , 618.0 , 644.0 , 670.0 , 696.0 , 986.0 , 1028.0 , 1070.0 , 1112.0 ,
194+ 1354.0 , 1412.0 , 1470.0 , 1528.0 ,
195+ ] ;
196+
197+ let variant = crate :: variants:: Isomorphic ;
198+ let matrix_multiplier = futures:: executor:: block_on ( SingleThreadedMatMul :: new ( variant) ) ;
199+
200+ let result = matrix_multiplier. multiply ( & a, & b, m, k, n) ;
201+
202+ assert_eq ! ( result, expected) ;
203+ }
204+
174205 #[ test]
175206 fn test_multithreaded_matmul_2x1x1 ( ) {
176207 let m = 2 ;
0 commit comments