pub fn msm_par<F, FC, C>(
chip: &EccChip<'_, F, FC>,
builder: &mut GateThreadBuilder<F>,
points: &[C],
scalars: Vec<Vec<AssignedValue<F>>>,
max_scalar_bits_per_cell: usize,
window_bits: usize,
phase: usize
) -> EcPoint<F, FC::FieldPoint>where
F: PrimeField,
C: CurveAffineExt,
FC: FieldChip<F, FieldType = C::Base> + Selectable<F, FC::FieldPoint>,
Expand description
points.len() = scalars.len()
scalars[i].len() = scalars[j].len()
for all i,j
points
are all on the curve
points[i]
is not point at infinity (0, 0); these should be filtered out beforehand
- The integer value of
scalars[i]
is less than the order of points[i]
- Output may be point at infinity, in which case (0, 0) is returned