fn multi_miller_pairing_with_semi_prepared(
    g11: &G1Affine,
    g21: &G2Affine,
    g12: &G1Affine,
    g22: &G2Prepared,
) {
    let miller_loop_result =
        multi_miller_loop(&[(g11, &G2Prepared::from(*g21)), (&g12.neg(), &g22)]);
    assert!(bool::from(
        miller_loop_result.final_exponentiation().is_identity()
    ))
}
// the case of being able to prepare G2 generator
the case of being able to prepare G2 generator
the case of being able to prepare G2 generator
fn multi_miller_pairing_with_semi_prepared(
    g11: &G1Affine,
    g21: &G2Affine,
    g12: &G1Affine,
    g22: &G2Prepared,
) {
    let miller_loop_result =
        multi_miller_loop(&[(g11, &G2Prepared::from(*g21)), (&g12.neg(), &g22)]);
    assert!(bool::from(
        miller_loop_result.final_exponentiation().is_identity()
    ))
}
fn multi_miller_pairing_with_semi_prepared ( g11 : & G1Affine , g21 : & G2Affine , g12 : & G1Affine , g22 : & G2Prepared , ) { let miller_loop_result = multi_miller_loop ( & [ ( g11 , & G2Prepared :: from ( * g21 ) ) , ( & g12 . neg ( ) , & g22 ) ] ) ; assert ! ( bool from ( miller_loop_result final_exponentiation ( ) is_identity ( ) ) ) }
the case of being able to prepare G2 generator
the case of being able to prepare G2 generator
g11
&G1Affine
g21
&G2Affine
g12
&G1Affine
g22
&G2Prepared