pub fn sparse_fp12_mul(a: &Fp12E, b: &Fp12E) -> Fp12E {
    let [a0, a1] = a.value();
    let [b0, b1] = b.value();
    let b00 = &b0.value()[0];
    let [b10, b11, _] = b1.value();

    let t0 = a0 * b0;
    let t1 = a1 * b1;
    let c0 = &t0 + mul_fp6_by_nonresidue(&t1);
    let t2 = Fp6E::new([b10 + b00, b11.clone(), Fp2E::zero()]);
    let mut c1 = (a0 + a1) * t2;
    c1 = c1 - t0 - t1;

    Fp12E::new([c0, c1])
}
Multiplication between a = a0 + a1 * w and b = b0 + b1 * w with
b1 = b10 + b11 * v + 0 * v^2 which is the case of the line used
in the miller loop.
crates/math/src/elliptic_curve/short_weierstrass/curves/bn_254/field_extension.rs