macro_rules! math {
(
($( $T:ty ),* )
$doc:literal
const fn $name:ident ($base:ident : $base_ty:ty) -> $returns:ty $implementation:block
) => { ... };
(
($( $T:ty ),*)
$doc:literal
fn $name:ident ($base:ident : $base_ty:ty) -> $ret:ty $implementation:block
) => { ... };
(
($( $T:ty ),*)
$doc:literal
fn $name:ident ($base:ident : $base_ty:ty, $operand:ident : $operand_ty:ty ) -> $ret:ty $implementation:block
) => { ... };
}