From a3e3971bcf5cc938db1fcae1e24e1c72f5a10038 Mon Sep 17 00:00:00 2001 From: hachem Date: Mon, 16 Sep 2024 21:22:44 +0200 Subject: refactor and fix bugs --- libmu/src/maths/matrix.rs | 41 ++++++++++++++++------------------------- 1 file changed, 16 insertions(+), 25 deletions(-) (limited to 'libmu/src/maths/matrix.rs') diff --git a/libmu/src/maths/matrix.rs b/libmu/src/maths/matrix.rs index 9724086..9932895 100644 --- a/libmu/src/maths/matrix.rs +++ b/libmu/src/maths/matrix.rs @@ -1,38 +1,29 @@ +// TODO(Hachem): Refactor + use super::Float; use core::{fmt, ops}; #[macro_export] macro_rules! matrix { - ($( $( $x:expr ),* );* ) => {{ - let data = vec![ - $( - $( - $x, - )* - )* - ]; - - let rows = <[()]>::len(&[$( $crate::count_items!($($x),*) ),*]); - let cols = $crate::count_items!($($x),*); + ( $( $( $x:expr ),* );* ) => {{ + let mut data = Vec::new(); + let mut rows = 0; + let mut cols = 0; + + $( + let row_data = $( $x )*; + if cols == 0 { + cols = row_data.len(); + } + assert_eq!(cols, row_data.len(), "All rows must have the same number of columns."); + data.extend(row_data); + rows += 1; + )* $crate::Matrix::new(rows, cols, data) }}; } -#[macro_export] -macro_rules! count_items { - ($($item:expr),*) => { - <[()]>::len(&[$( $crate::replace_expr!($item ())),*]) - }; -} - -#[macro_export] -macro_rules! replace_expr { - ($_t:tt $sub:expr) => { - $sub - }; -} - pub struct Matrix { pub data: Vec, pub rows: usize, -- cgit v1.3