pub fn dot_product<S, LI, RI>(li: LI, ri: RI) -> Swhere LI: Iterator, RI: Iterator, LI::Item: Mul<RI::Item>, S: Sum<<LI::Item as Mul<RI::Item>>::Output>,
Maximally generic dot product.