pub fn combine_polys<G: CommitmentCurve, D: EvaluationDomain<G::ScalarField>>(
    plnms: &'_ [(DensePolynomialOrEvaluations<'_, G::ScalarField, D>, PolyComm<G::ScalarField>)],
    polyscale: G::ScalarField,
    srs_length: usize
) -> (DensePolynomial<G::ScalarField>, G::ScalarField)
Expand description

Combine the polynomials using a scalar (polyscale), creating a single unified polynomial to open. This function also accepts polynomials in evaluations form. In this case it applies an IFFT, and, if necessarry, applies chunking to it (ie. split it in multiple polynomials of degree less than the SRS size). Parameters:

  • plnms: vector of polynomials, either in evaluations or coefficients form. The order of the output follows the order of this structure.
  • polyscale: scalar to combine the polynomials, which will be scaled based on the number of polynomials to combine.

Example: Given the three polynomials p1(X), and p3(X) in coefficients forms, p2(X) in evaluation form, and the scaling factor s, the result will be the polynomial:

p1(X) + s * i_fft(chunks(p2))(X) + s^2 p3(X)

Additional complexity is added to handle chunks.