pub fn g_ic_into_affine_1(
    g_ic_x_range: &mut Vec<u8>,
    g_ic_y_range: &mut Vec<u8>,
    g_ic_z_range: &mut Vec<u8>,
) -> Result<(), ProgramError> {
    let g_ic: ark_ec::short_weierstrass_jacobian::GroupProjective<ark_bn254::g1::Parameters> =
        parse_group_projective_from_bytes_254(g_ic_x_range, g_ic_y_range, g_ic_z_range); // 15k
    let zinv = ark_ff::Field::inverse(&g_ic.z).unwrap();
    let g_ic_with_zinv: ark_ec::short_weierstrass_jacobian::GroupProjective<
        ark_bn254::g1::Parameters,
    > = ark_ec::short_weierstrass_jacobian::GroupProjective::new(g_ic.x, g_ic.y, zinv);
    parse_group_projective_to_bytes_254(g_ic_with_zinv, g_ic_x_range, g_ic_y_range, g_ic_z_range);
    Ok(())
}
// There are two ix in total to turn the g_ic from projective into affine.
// In the end the affine's stored in the x_1_range (overwrite).
// The verifier then reads the x_1_range to use the g_ic value as P2 for the millerloop.
// Split up into two ix because of compute budget limits.
There are two ix in total to turn the g_ic from projective into affine.
In the end the affine's stored in the x_1_range (overwrite).
The verifier then reads the x_1_range to use the g_ic value as P2 for the millerloop.
Split up into two ix because of compute budget limits.
There are two ix in total to turn the g_ic from projective into affine . In the end the affine ' s stored in the x_1_range ( overwrite ) . The verifier then reads the x_1_range to use the g_ic value as P2 for the millerloop . Split up into two ix because of compute budget limits .
pub fn g_ic_into_affine_1(
    g_ic_x_range: &mut Vec<u8>,
    g_ic_y_range: &mut Vec<u8>,
    g_ic_z_range: &mut Vec<u8>,
) -> Result<(), ProgramError> {
    let g_ic: ark_ec::short_weierstrass_jacobian::GroupProjective<ark_bn254::g1::Parameters> =
        parse_group_projective_from_bytes_254(g_ic_x_range, g_ic_y_range, g_ic_z_range); // 15k
    let zinv = ark_ff::Field::inverse(&g_ic.z).unwrap();
    let g_ic_with_zinv: ark_ec::short_weierstrass_jacobian::GroupProjective<
        ark_bn254::g1::Parameters,
    > = ark_ec::short_weierstrass_jacobian::GroupProjective::new(g_ic.x, g_ic.y, zinv);
    parse_group_projective_to_bytes_254(g_ic_with_zinv, g_ic_x_range, g_ic_y_range, g_ic_z_range);
    Ok(())
}
pub fn g_ic_into_affine_1 ( g_ic_x_range : & mut Vec < u8 > , g_ic_y_range : & mut Vec < u8 > , g_ic_z_range : & mut Vec < u8 > , ) -> Result < ( ) , ProgramError > { let g_ic : ark_ec :: short_weierstrass_jacobian :: GroupProjective < ark_bn254 :: g1 :: Parameters > = parse_group_projective_from_bytes_254 ( g_ic_x_range , g_ic_y_range , g_ic_z_range ) ; // 15k let zinv = ark_ff :: Field :: inverse ( & g_ic . z ) . unwrap ( ) ; let g_ic_with_zinv : ark_ec :: short_weierstrass_jacobian :: GroupProjective < ark_bn254 :: g1 :: Parameters , > = ark_ec :: short_weierstrass_jacobian :: GroupProjective :: new ( g_ic . x , g_ic . y , zinv ) ; parse_group_projective_to_bytes_254 ( g_ic_with_zinv , g_ic_x_range , g_ic_y_range , g_ic_z_range ) ; Ok ( ( ) ) }
There are two ix in total to turn the g_ic from projective into affine.
There are two ix in total to turn the g_ic from projective into affine .
g_ic_x_range
&mut Vec<u8>
g_ic_y_range
&mut Vec<u8>
g_ic_z_range
&mut Vec<u8>