The general operation c = (a_0 * b_0) + (a_1 * b_1) + ... (i.e. an inner product, but "sum of products" is a more obvious name) is used all over the place in cryptography. We can provide a default slow implementation of the function, and then downstream crates can override it with more efficient implementations (e.g. zkcrypto/bls12_381#84).