#[macro_export]
macro_rules! impl_buffer_x {
(mut $vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_x!($vec_name, $num_states, $t, $init, let mut)
};
($vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_x!($vec_name, $num_states, $t, $init, let)
};
(let mut $vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_x!($vec_name, $num_states, $t, $init, let mut)
};
(let $vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_x!($vec_name, $num_states, $t, $init, let)
};
(static mut $vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_x!($vec_name, $num_states, $t, $init, static mut)
};
(static $vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_x!($vec_name, $num_states, $t, $init, static)
};
($vec_name:ident, $num_states:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $vec_name: $crate::buffers::types::StateVectorBuffer<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, 1, { $num_states * 1 }, $t>,
> = $crate::buffers::types::StateVectorBuffer::<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, 1, { $num_states * 1 }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * 1 }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_A {
(mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_A!($mat_name, $num_states, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_A!($mat_name, $num_states, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_A!($mat_name, $num_states, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_A!($mat_name, $num_states, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_A!($mat_name, $num_states, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_A!($mat_name, $num_states, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::StateTransitionMatrixMutBuffer<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
> = $crate::buffers::types::StateTransitionMatrixMutBuffer::<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_states }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_P {
(mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_P!($mat_name, $num_states, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_P!($mat_name, $num_states, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_P!($mat_name, $num_states, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_P!($mat_name, $num_states, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_P!($mat_name, $num_states, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_P!($mat_name, $num_states, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::EstimateCovarianceMatrixBuffer<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
> = $crate::buffers::types::EstimateCovarianceMatrixBuffer::<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_states }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_Q_direct {
(mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_direct!($mat_name, $num_states, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_direct!($mat_name, $num_states, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_direct!($mat_name, $num_states, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_direct!($mat_name, $num_states, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_direct!($mat_name, $num_states, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_direct!($mat_name, $num_states, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::DirectProcessNoiseCovarianceMatrixMutBuffer<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
> = $crate::buffers::types::DirectProcessNoiseCovarianceMatrixMutBuffer::<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_states }],
));
};
}
#[macro_export]
macro_rules! impl_buffer_u {
(mut $vec_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_u!($vec_name, $num_controls, $t, $init, let mut)
};
($vec_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_u!($vec_name, $num_controls, $t, $init, let)
};
(let mut $vec_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_u!($vec_name, $num_controls, $t, $init, let mut)
};
(let $vec_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_u!($vec_name, $num_controls, $t, $init, let)
};
(static mut $vec_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_u!($vec_name, $num_controls, $t, $init, static mut)
};
(static $vec_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_u!($vec_name, $num_controls, $t, $init, static)
};
($vec_name:ident, $num_controls:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $vec_name: $crate::buffers::types::ControlVectorBuffer<
$num_controls,
$t,
$crate::matrix::MatrixDataArray<$num_controls, 1, { $num_controls * 1 }, $t>,
> = $crate::buffers::types::ControlVectorBuffer::<
$num_controls,
$t,
$crate::matrix::MatrixDataArray<$num_controls, 1, { $num_controls * 1 }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_controls * 1 }],
));
};
}
#[macro_export]
macro_rules! impl_buffer_sigma_points {
(mut $mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_points!($mat_name, $num_states, $num_sigma, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_points!($mat_name, $num_states, $num_sigma, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_points!($mat_name, $num_states, $num_sigma, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_points!($mat_name, $num_states, $num_sigma, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_points!($mat_name, $num_states, $num_sigma, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_points!($mat_name, $num_states, $num_sigma, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::SigmaPointMatrixBuffer<
$num_states,
$num_sigma,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_sigma, { $num_states * $num_sigma }, $t>,
> = $crate::buffers::types::SigmaPointMatrixBuffer::<
$num_states,
$num_sigma,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_sigma, { $num_states * $num_sigma }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_sigma }],
));
};
}
#[macro_export]
macro_rules! impl_buffer_sigma_weights {
(mut $vec_name:ident, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_weights!($vec_name, $num_sigma, $t, $init, let mut)
};
($vec_name:ident, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_weights!($vec_name, $num_sigma, $t, $init, let)
};
(let mut $vec_name:ident, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_weights!($vec_name, $num_sigma, $t, $init, let mut)
};
(let $vec_name:ident, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_weights!($vec_name, $num_sigma, $t, $init, let)
};
(static mut $vec_name:ident, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_weights!($vec_name, $num_sigma, $t, $init, static mut)
};
(static $vec_name:ident, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_weights!($vec_name, $num_sigma, $t, $init, static)
};
($vec_name:ident, $num_sigma:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $vec_name: $crate::buffers::types::SigmaWeightsVectorBuffer<
$num_sigma,
$t,
$crate::matrix::MatrixDataArray<$num_sigma, 1, $num_sigma, $t>,
> = $crate::buffers::types::SigmaWeightsVectorBuffer::<
$num_sigma,
$t,
$crate::matrix::MatrixDataArray<$num_sigma, 1, $num_sigma, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; $num_sigma],
));
};
}
#[macro_export]
macro_rules! impl_buffer_sigma_propagated {
(mut $mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_propagated!($mat_name, $num_states, $num_sigma, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_propagated!($mat_name, $num_states, $num_sigma, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_propagated!($mat_name, $num_states, $num_sigma, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_propagated!($mat_name, $num_states, $num_sigma, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_propagated!($mat_name, $num_states, $num_sigma, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_propagated!($mat_name, $num_states, $num_sigma, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $num_sigma:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::SigmaPropagatedMatrixBuffer<
$num_states,
$num_sigma,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_sigma, { $num_states * $num_sigma }, $t>,
> = $crate::buffers::types::SigmaPropagatedMatrixBuffer::<
$num_states,
$num_sigma,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_sigma, { $num_states * $num_sigma }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_sigma }],
));
};
}
#[macro_export]
macro_rules! impl_buffer_sigma_observed {
(mut $mat_name:ident, $num_obs:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_observed!($mat_name, $num_obs, $num_sigma, $t, $init, let mut)
};
($mat_name:ident, $num_obs:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_observed!($mat_name, $num_obs, $num_sigma, $t, $init, let)
};
(let mut $mat_name:ident, $num_obs:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_observed!($mat_name, $num_obs, $num_sigma, $t, $init, let mut)
};
(let $mat_name:ident, $num_obs:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_observed!($mat_name, $num_obs, $num_sigma, $t, $init, let)
};
(static mut $mat_name:ident, $num_obs:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_observed!($mat_name, $num_obs, $num_sigma, $t, $init, static mut)
};
(static $mat_name:ident, $num_obs:expr, $num_sigma:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_sigma_observed!($mat_name, $num_obs, $num_sigma, $t, $init, static)
};
($mat_name:ident, $num_obs:expr, $num_sigma:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::SigmaObservedMatrixBuffer<
$num_obs,
$num_sigma,
$t,
$crate::matrix::MatrixDataArray<$num_obs, $num_sigma, { $num_obs * $num_sigma }, $t>,
> = $crate::buffers::types::SigmaObservedMatrixBuffer::<
$num_obs,
$num_sigma,
$t,
$crate::matrix::MatrixDataArray<$num_obs, $num_sigma, { $num_obs * $num_sigma }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_obs * $num_sigma }],
));
};
}
#[macro_export]
macro_rules! impl_buffer_cross_covariance {
(mut $mat_name:ident, $num_states:expr, $num_obs:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_cross_covariance!($mat_name, $num_states, $num_obs, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $num_obs:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_cross_covariance!($mat_name, $num_states, $num_obs, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $num_obs:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_cross_covariance!($mat_name, $num_states, $num_obs, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $num_obs:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_cross_covariance!($mat_name, $num_states, $num_obs, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $num_obs:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_cross_covariance!($mat_name, $num_states, $num_obs, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $num_obs:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_cross_covariance!($mat_name, $num_states, $num_obs, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $num_obs:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::CrossCovarianceMatrixBuffer<
$num_states,
$num_obs,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_obs, { $num_states * $num_obs }, $t>,
> = $crate::buffers::types::CrossCovarianceMatrixBuffer::<
$num_states,
$num_obs,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_obs, { $num_states * $num_obs }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_obs }],
));
};
}
#[macro_export]
macro_rules! impl_buffer_temp_sigma_P {
(mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_sigma_P!($mat_name, $num_states, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_sigma_P!($mat_name, $num_states, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_sigma_P!($mat_name, $num_states, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_sigma_P!($mat_name, $num_states, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_sigma_P!($mat_name, $num_states, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_sigma_P!($mat_name, $num_states, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::TempSigmaPMatrixBuffer<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
> = $crate::buffers::types::TempSigmaPMatrixBuffer::<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_states }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_B {
(mut $mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_B!($mat_name, $num_states, $num_controls, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_B!($mat_name, $num_states, $num_controls, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_B!($mat_name, $num_states, $num_controls, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_B!($mat_name, $num_states, $num_controls, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_B!($mat_name, $num_states, $num_controls, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_B!($mat_name, $num_states, $num_controls, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::ControlMatrixMutBuffer<
$num_states,
$num_controls,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_controls, { $num_states * $num_controls }, $t>,
> = $crate::buffers::types::ControlMatrixMutBuffer::<
$num_states,
$num_controls,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_controls, { $num_states * $num_controls }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_controls }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_Q_control {
(mut $mat_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_control!($mat_name, $num_controls, $t, $init, let mut)
};
($mat_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_control!($mat_name, $num_controls, $t, $init, let)
};
(let mut $mat_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_control!($mat_name, $num_controls, $t, $init, let mut)
};
(let $mat_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_control!($mat_name, $num_controls, $t, $init, let)
};
(static mut $mat_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_control!($mat_name, $num_controls, $t, $init, static mut)
};
(static $mat_name:ident, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_Q_control!($mat_name, $num_controls, $t, $init, static)
};
($mat_name:ident, $num_controls:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::ControlProcessNoiseCovarianceMatrixMutBuffer<
$num_controls,
$t,
$crate::matrix::MatrixDataArray<$num_controls, $num_controls, { $num_controls * $num_controls }, $t>,
> = $crate::buffers::types::ControlProcessNoiseCovarianceMatrixMutBuffer::<
$num_controls,
$t,
$crate::matrix::MatrixDataArray<$num_controls, $num_controls, { $num_controls * $num_controls }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_controls * $num_controls }],
));
};
}
#[macro_export]
macro_rules! impl_buffer_z {
(mut $vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_z!($vec_name, $num_measurements, $t, $init, let mut)
};
($vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_z!($vec_name, $num_measurements, $t, $init, let)
};
(let mut $vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_z!($vec_name, $num_measurements, $t, $init, let mut)
};
(let $vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_z!($vec_name, $num_measurements, $t, $init, let)
};
(static mut $vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_z!($vec_name, $num_measurements, $t, $init, static mut)
};
(static $vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_z!($vec_name, $num_measurements, $t, $init, static)
};
($vec_name:ident, $num_measurements:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $vec_name: $crate::buffers::types::MeasurementVectorBuffer<
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<$num_measurements, 1, { $num_measurements * 1 }, $t>,
> = $crate::buffers::types::MeasurementVectorBuffer::<
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<$num_measurements, 1, { $num_measurements * 1 }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_measurements * 1 }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_H {
(mut $mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_H!($mat_name, $num_measurements, $num_states, $t, $init, let mut)
};
($mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_H!($mat_name, $num_measurements, $num_states, $t, $init, let)
};
(let mut $mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_H!($mat_name, $num_measurements, $num_states, $t, $init, let mut)
};
(let $mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_H!($mat_name, $num_measurements, $num_states, $t, $init, let)
};
(static mut $mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_H!($mat_name, $num_measurements, $num_states, $t, $init, static mut)
};
(static $mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_H!($mat_name, $num_measurements, $num_states, $t, $init, static)
};
($mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::ObservationMatrixMutBuffer<
$num_measurements,
$num_states,
$t,
$crate::matrix::MatrixDataArray<
$num_measurements,
$num_states,
{ $num_measurements * $num_states },
$t,
>,
> = $crate::buffers::types::ObservationMatrixMutBuffer::<
$num_measurements,
$num_states,
$t,
$crate::matrix::MatrixDataArray<
$num_measurements,
$num_states,
{ $num_measurements * $num_states },
$t,
>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_measurements * $num_states }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_R {
(mut $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_R!($mat_name, $num_measurements, $t, $init, let mut)
};
($mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_R!($mat_name, $num_measurements, $t, $init, let)
};
(let mut $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_R!($mat_name, $num_measurements, $t, $init, let mut)
};
(let $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_R!($mat_name, $num_measurements, $t, $init, let)
};
(static mut $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_R!($mat_name, $num_measurements, $t, $init, static mut)
};
(static $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_R!($mat_name, $num_measurements, $t, $init, static)
};
($mat_name:ident, $num_measurements:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::MeasurementNoiseCovarianceMatrixBuffer<
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<
$num_measurements,
$num_measurements,
{ $num_measurements * $num_measurements },
$t,
>,
> = $crate::buffers::types::MeasurementNoiseCovarianceMatrixBuffer::<
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<
$num_measurements,
$num_measurements,
{ $num_measurements * $num_measurements },
$t,
>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_measurements * $num_measurements }],
));
};
}
#[macro_export]
macro_rules! impl_buffer_y {
(mut $vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_y!($vec_name, $num_measurements, $t, $init, let mut)
};
($vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_y!($vec_name, $num_measurements, $t, $init, let)
};
(let mut $vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_y!($vec_name, $num_measurements, $t, $init, let mut)
};
(let $vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_y!($vec_name, $num_measurements, $t, $init, let)
};
(static mut $vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_y!($vec_name, $num_measurements, $t, $init, static mut)
};
(static $vec_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_y!($vec_name, $num_measurements, $t, $init, static)
};
($vec_name:ident, $num_measurements:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $vec_name: $crate::buffers::types::InnovationVectorBuffer<
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<$num_measurements, 1, { $num_measurements * 1 }, $t>,
> = $crate::buffers::types::InnovationVectorBuffer::<
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<$num_measurements, 1, { $num_measurements * 1 }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_measurements * 1 }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_S {
(mut $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_S!($mat_name, $num_measurements, $t, $init, let mut)
};
($mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_S!($mat_name, $num_measurements, $t, $init, let)
};
(let mut $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_S!($mat_name, $num_measurements, $t, $init, let mut)
};
(let $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_S!($mat_name, $num_measurements, $t, $init, let)
};
(static mut $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_S!($mat_name, $num_measurements, $t, $init, static mut)
};
(static $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_S!($mat_name, $num_measurements, $t, $init, static)
};
($mat_name:ident, $num_measurements:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::InnovationCovarianceMatrixBuffer<
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<
$num_measurements,
$num_measurements,
{ $num_measurements * $num_measurements },
$t,
>,
> = $crate::buffers::types::InnovationCovarianceMatrixBuffer::<
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<
$num_measurements,
$num_measurements,
{ $num_measurements * $num_measurements },
$t,
>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_measurements * $num_measurements }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_K {
(mut $mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_K!($mat_name, $num_states, $num_measurements, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_K!($mat_name, $num_states, $num_measurements, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_K!($mat_name, $num_states, $num_measurements, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_K!($mat_name, $num_states, $num_measurements, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_K!($mat_name, $num_states, $num_measurements, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_K!($mat_name, $num_states, $num_measurements, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::KalmanGainMatrixBuffer<
$num_states,
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<
$num_states,
$num_measurements,
{ $num_states * $num_measurements },
$t,
>,
> = $crate::buffers::types::KalmanGainMatrixBuffer::<
$num_states,
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<
$num_states,
$num_measurements,
{ $num_states * $num_measurements },
$t,
>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_measurements }],
));
};
}
#[macro_export]
macro_rules! impl_buffer_temp_x {
(mut $vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_x!($vec_name, $num_states, $t, $init, let mut)
};
($vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_x!($vec_name, $num_states, $t, $init, let)
};
(let mut $vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_x!($vec_name, $num_states, $t, $init, let mut)
};
(let $vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_x!($vec_name, $num_states, $t, $init, let)
};
(static mut $vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_x!($vec_name, $num_states, $t, $init, static mut)
};
(static $vec_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_x!($vec_name, $num_states, $t, $init, static)
};
($vec_name:ident, $num_states:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $vec_name: $crate::buffers::types::PredictedStateEstimateVectorBuffer<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, 1, { $num_states * 1 }, $t>,
> = $crate::buffers::types::PredictedStateEstimateVectorBuffer::<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, 1, { $num_states * 1 }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * 1 }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_temp_P {
(mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_P!($mat_name, $num_states, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_P!($mat_name, $num_states, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_P!($mat_name, $num_states, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_P!($mat_name, $num_states, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_P!($mat_name, $num_states, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_P!($mat_name, $num_states, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::TemporaryStateMatrixBuffer<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
> = $crate::buffers::types::TemporaryStateMatrixBuffer::<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_states }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_temp_BQ {
(mut $mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_BQ!($mat_name, $num_states, $num_controls, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_BQ!($mat_name, $num_states, $num_controls, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_BQ!($mat_name, $num_states, $num_controls, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_BQ!($mat_name, $num_states, $num_controls, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_BQ!($mat_name, $num_states, $num_controls, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_BQ!($mat_name, $num_states, $num_controls, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $num_controls:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::TemporaryBQMatrixBuffer<
$num_states,
$num_controls,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_controls, { $num_states * $num_controls }, $t>,
> = $crate::buffers::types::TemporaryBQMatrixBuffer::<
$num_states,
$num_controls,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_controls, { $num_states * $num_controls }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_controls }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_temp_S_inv {
(mut $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_S_inv!($mat_name, $num_measurements, $t, $init, let mut)
};
($mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_S_inv!($mat_name, $num_measurements, $t, $init, let)
};
(let mut $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_S_inv!($mat_name, $num_measurements, $t, $init, let mut)
};
(let $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_S_inv!($mat_name, $num_measurements, $t, $init, let)
};
(static mut $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_S_inv!($mat_name, $num_measurements, $t, $init, static mut)
};
(static $mat_name:ident, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_S_inv!($mat_name, $num_measurements, $t, $init, static)
};
($mat_name:ident, $num_measurements:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::TemporaryResidualCovarianceInvertedMatrixBuffer<
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<
$num_measurements,
$num_measurements,
{ $num_measurements * $num_measurements },
$t,
>,
> = $crate::buffers::types::TemporaryResidualCovarianceInvertedMatrixBuffer::<
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<
$num_measurements,
$num_measurements,
{ $num_measurements * $num_measurements },
$t,
>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_measurements * $num_measurements }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_temp_HP {
(mut $mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_HP!($mat_name, $num_measurements, $num_states, $t, $init, let mut)
};
($mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_HP!($mat_name, $num_measurements, $num_states, $t, $init, let)
};
(let mut $mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_HP!($mat_name, $num_measurements, $num_states, $t, $init, let mut)
};
(let $mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_HP!($mat_name, $num_measurements, $num_states, $t, $init, let)
};
(static mut $mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_HP!($mat_name, $num_measurements, $num_states, $t, $init, static mut)
};
(static $mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_HP!($mat_name, $num_measurements, $num_states, $t, $init, static)
};
($mat_name:ident, $num_measurements:expr, $num_states:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::TemporaryHPMatrixBuffer<
$num_measurements,
$num_states,
$t,
$crate::matrix::MatrixDataArray<
$num_measurements,
$num_states,
{ $num_measurements * $num_states },
$t,
>,
> = $crate::buffers::types::TemporaryHPMatrixBuffer::<
$num_measurements,
$num_states,
$t,
$crate::matrix::MatrixDataArray<
$num_measurements,
$num_states,
{ $num_measurements * $num_states },
$t,
>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_measurements * $num_states }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_temp_PHt {
(mut $mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_PHt!($mat_name, $num_states, $num_measurements, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_PHt!($mat_name, $num_states, $num_measurements, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_PHt!($mat_name, $num_states, $num_measurements, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_PHt!($mat_name, $num_states, $num_measurements, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_PHt!($mat_name, $num_states, $num_measurements, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_PHt!($mat_name, $num_states, $num_measurements, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $num_measurements:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::TemporaryPHTMatrixBuffer<
$num_states,
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<
$num_states,
$num_measurements,
{ $num_states * $num_measurements },
$t,
>,
> = $crate::buffers::types::TemporaryPHTMatrixBuffer::<
$num_states,
$num_measurements,
$t,
$crate::matrix::MatrixDataArray<
$num_states,
$num_measurements,
{ $num_states * $num_measurements },
$t,
>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_measurements }],
));
};
}
#[macro_export]
#[allow(non_snake_case)]
macro_rules! impl_buffer_temp_KHP {
(mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_KHP!($mat_name, $num_states, $t, $init, let mut)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_KHP!($mat_name, $num_states, $t, $init, let)
};
(let mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_KHP!($mat_name, $num_states, $t, $init, let mut)
};
(let $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_KHP!($mat_name, $num_states, $t, $init, let)
};
(static mut $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_KHP!($mat_name, $num_states, $t, $init, static mut)
};
(static $mat_name:ident, $num_states:expr, $t:ty, $init:expr) => {
$crate::impl_buffer_temp_KHP!($mat_name, $num_states, $t, $init, static)
};
($mat_name:ident, $num_states:expr, $t:ty, $init:expr, $($keywords:tt)+) => {
$($keywords)* $mat_name: $crate::buffers::types::TemporaryKHPMatrixBuffer<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
> = $crate::buffers::types::TemporaryKHPMatrixBuffer::<
$num_states,
$t,
$crate::matrix::MatrixDataArray<$num_states, $num_states, { $num_states * $num_states }, $t>,
>::new($crate::matrix::MatrixDataArray::new_unchecked(
[$init; { $num_states * $num_states }],
));
};
}