vec4
pub fn dot<T>(a: &[T; 4], b: &[T; 4]) -> T where T: Add<T, Output = T>, &'a T: Mul<&'b T, Output = T>,
assert_eq!(vec4::dot::<f32>(&vec4::new_one(), &vec4::new_one()), 4_f32);