pub fn dot_product<T, const N: usize>(u: [T; N], v: [T; N]) -> Twhere T: Copy + AddAssign + Mul<Output = T>,
This will throw an error if N = 0 but it’s hard to imagine this case coming up.