macro_rules! impl_dot { ($($t:ty),+) => { ... }; }
Generate dot product implementations for integer types that return larger types to avoid overflow