halo2_ecc::ecc::pippenger

Function multi_exp_par

Source
pub fn multi_exp_par<F: BigPrimeField, FC, C>(
    chip: &FC,
    builder: &mut SinglePhaseCoreManager<F>,
    points: &[EcPoint<F, FC::FieldPoint>],
    scalars: Vec<Vec<AssignedValue<F>>>,
    max_scalar_bits_per_cell: usize,
    clump_factor: usize,
) -> EcPoint<F, FC::FieldPoint>
where FC: FieldChip<F> + Selectable<F, FC::FieldPoint> + Selectable<F, FC::ReducedFieldPoint>, C: CurveAffineExt<Base = FC::FieldType>,
Expand description

Multi-thread witness generation for multi-scalar multiplication.

ยงAssumptions

  • points.len() == scalars.len()
  • scalars[i].len() == scalars[j].len() for all i, j
  • points are all on the curve or the point at infinity
  • points[i] is allowed to be (0, 0) to represent the point at infinity (identity point)
  • Currently implementation assumes that the only point on curve with y-coordinate equal to 0 is identity point