#[macro_export]
macro_rules! matrix {
[] => {{
use $crate::Matrix;
Matrix::<_>::new()
}};
[[$elem:expr; $ncols:expr]; $nrows:expr] => {{
use $crate::Matrix;
match Matrix::<_>::from_value(($nrows, $ncols), $elem) {
Err(error) => ::core::panic!("{error}"),
Ok(matrix) => matrix,
}
}};
[[$($elem:expr),+ $(,)?]; $nrows:expr] => {{
extern crate alloc;
use $crate::Matrix;
use $crate::convert::TryFromRows;
match <Matrix::<_> as TryFromRows<_>>::try_from_rows(alloc::vec![[$($elem),+]; $nrows]) {
Err(error) => ::core::panic!("{error}"),
Ok(matrix) => matrix,
}
}};
[$($row:expr),+ $(,)?] => {{
use $crate::Matrix;
use $crate::convert::TryFromRows;
match <Matrix::<_> as TryFromRows<_>>::try_from_rows([$($row),+]) {
Err(error) => ::core::panic!("{error}"),
Ok(matrix) => matrix,
}
}};
}
#[cfg(test)]
#[macro_export]
macro_rules! dispatch_unary {
{ $block:block } => {{
use $crate::dense::layout::{ColMajor, RowMajor};
{
type O = RowMajor;
$block
}
{
type O = ColMajor;
$block
}
}};
}
#[cfg(test)]
#[macro_export]
macro_rules! dispatch_binary {
{ $block:block } => {{
use $crate::dense::layout::{ColMajor, RowMajor};
{
type O = RowMajor;
type P = RowMajor;
$block
}
{
type O = RowMajor;
type P = ColMajor;
$block
}
{
type O = ColMajor;
type P = RowMajor;
$block
}
{
type O = ColMajor;
type P = ColMajor;
$block
}
}};
}