From 64e578fae275afc58b2abb8dc2b51441d97e5d51 Mon Sep 17 00:00:00 2001 From: Palash Tyagi <23239946+Magnus167@users.noreply.github.com> Date: Sun, 6 Jul 2025 01:21:30 +0100 Subject: [PATCH] Add examples for matrix multiplication, dot product, and transpose in README --- README.md | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a6ba8ad..efcab70 100644 --- a/README.md +++ b/README.md @@ -94,10 +94,38 @@ assert!(check); // The above math can also be written as: let check: bool = ((((ma.clone() + 1.0) - 1.0) * 2.0) / 2.0) - .eq_elem(ma) + .eq_elem(ma.clone()) .all(); assert!(check); +// Matrix multiplication +let mc: Matrix = Matrix::from_cols(vec![vec![1.0, 2.0], vec![3.0, 4.0]]); +let md: Matrix = Matrix::from_cols(vec![vec![5.0, 6.0], vec![7.0, 8.0]]); +let mul_result: Matrix = mc.matrix_mul(&md); +// Expected: +// 1*5 + 3*6 = 5 + 18 = 23 +// 2*5 + 4*6 = 10 + 24 = 34 +// 1*7 + 3*8 = 7 + 24 = 31 +// 2*7 + 4*8 = 14 + 32 = 46 +assert_eq!(mul_result.data(), &[23.0, 34.0, 31.0, 46.0]); + +// Dot product (alias for matrix_mul for FloatMatrix) +let dot_result: Matrix = mc.dot(&md); +assert_eq!(dot_result, mul_result); + +// Transpose +let original_matrix: Matrix = Matrix::from_cols(vec![vec![1.0, 2.0, 3.0], vec![4.0, 5.0, 6.0]]); +// Original: +// 1 4 +// 2 5 +// 3 6 +let transposed_matrix: Matrix = original_matrix.transpose(); +// Transposed: +// 1 2 3 +// 4 5 6 +assert_eq!(transposed_matrix.rows(), 2); +assert_eq!(transposed_matrix.cols(), 3); +assert_eq!(transposed_matrix.data(), &[1.0, 4.0, 2.0, 5.0, 3.0, 6.0]); ```