pub fn multi_exp_par<F: PrimeField, FC, C>(
chip: &FC,
builder: &mut GateThreadBuilder<F>,
points: &[EcPoint<F, FC::FieldPoint>],
scalars: Vec<Vec<AssignedValue<F>>>,
max_scalar_bits_per_cell: usize,
clump_factor: usize,
phase: 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 alli, j
points
are all on the curve or the point at infinitypoints[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