Function poly_commitment::ipa::combine_polys
source · 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.