diff --git a/fixed_wide_vectors/src/macros/wide.rs b/fixed_wide_vectors/src/macros/wide.rs index d6a9eec..e35d51b 100644 --- a/fixed_wide_vectors/src/macros/wide.rs +++ b/fixed_wide_vectors/src/macros/wide.rs @@ -31,6 +31,43 @@ macro_rules! impl_wide_vector_operations { }; } +/* +#[doc(hidden)] +#[macro_export(local_inner_macros)] +macro_rules! impl_wide_matrix_operations { + ( + ($struct_outer: ident { $($field_outer: ident), + }, $size_outer: expr), + ($struct_inner: ident, $size_inner: expr), $fields_inner:tt + ) => { + impl<U,T:Copy+fixed_wide_traits::wide::WideMul<Output=U>> fixed_wide_traits::wide::WideMul for $struct<T> { + type Output=$struct<U>; + #[inline] + fn wide_mul(self, rhs: Self) -> Self::Output { + $struct{ + $( $field: self.$field.wide_mul(rhs.$field) ), + + } + } + } + impl<V:core::ops::Add<Output=V>,U,T:fixed_wide_traits::wide::WideMul<U,Output=V>> fixed_wide_traits::wide::WideDot<$struct<U>> for $struct<T> { + type Output=V; + #[inline] + fn wide_dot(self, rhs: $struct<U>) -> Self::Output { + $crate::sum_repeating!( + $( + (self.$field.wide_mul(rhs.$field)) ) + + ) + } + } + impl<U:std::ops::Add<Output=U>,T:Copy+fixed_wide_traits::wide::WideMul<Output=U>> $struct<T> { + #[inline] + pub fn wide_length_squared(&self) -> U { + $crate::sum_repeating!( + $( + self.$field.wide_mul(self.$field) ) + + ) + } + } + }; +} +*/ // HACK: Allows us to sum repeating tokens in macros. // See: https://stackoverflow.com/a/60187870/17452730