pub fn open<SF>(
        &self,
        polynomial: &SF,
        alpha: &E::Fr,
        max_msm_buffer: usize,
    ) -> (E::Fr, EvaluationProof<E>)
    where
        SF: Iterable,
        SF::Item: Borrow<E::Fr>,
    {
        let mut quotient = ChunkedPippenger::new(max_msm_buffer);

        let mut bases = self.powers_of_g.iter();
        let scalars = polynomial.iter();

        // align the streams and remove one degree
        bases
            .advance_by(self.powers_of_g.len() - polynomial.len())
            .expect(LENGTH_MISMATCH_MSG);

        let mut previous = E::Fr::zero();
        for (scalar, base) in scalars.zip(bases) {
            quotient.add(base, previous.into_bigint());
            let coefficient = previous * alpha + scalar.borrow();
            previous = coefficient;
        }

        let evaluation = previous;
        let evaluation_proof = quotient.finalize().into_affine();
        (evaluation, EvaluationProof(evaluation_proof))
    }
/// Evaluate a single polynomial at the point `alpha`, and provide an evaluation proof along with the evaluation.
Evaluate a single polynomial at the point `alpha`, and provide an evaluation proof along with the evaluation.
Evaluate a single polynomial at the point ` alpha ` and provide an evaluation proof along with the evaluation .
pub fn open<SF>(
        &self,
        polynomial: &SF,
        alpha: &E::Fr,
        max_msm_buffer: usize,
    ) -> (E::Fr, EvaluationProof<E>)
    where
        SF: Iterable,
        SF::Item: Borrow<E::Fr>,
    {
        let mut quotient = ChunkedPippenger::new(max_msm_buffer);
        let mut bases = self.powers_of_g.iter();
        let scalars = polynomial.iter();
        // align the streams and remove one degree
        bases
            .advance_by(self.powers_of_g.len() - polynomial.len())
            .expect(LENGTH_MISMATCH_MSG);
        let mut previous = E::Fr::zero();
        for (scalar, base) in scalars.zip(bases) {
            quotient.add(base, previous.into_bigint());
            let coefficient = previous * alpha + scalar.borrow();
            previous = coefficient;
        }
        let evaluation = previous;
        let evaluation_proof = quotient.finalize().into_affine();
        (evaluation, EvaluationProof(evaluation_proof))
    }
pub fn open < SF > ( & self , polynomial : & SF , alpha : & E :: Fr , max_msm_buffer : usize , ) -> ( E :: Fr , EvaluationProof < E > ) where SF : Iterable , SF :: Item : Borrow < E :: Fr > , { let mut quotient = ChunkedPippenger :: new ( max_msm_buffer ) ; let mut bases = self . powers_of_g . iter ( ) ; let scalars = polynomial . iter ( ) ; // align the streams and remove one degree bases . advance_by ( self . powers_of_g . len ( ) - polynomial . len ( ) ) . expect ( LENGTH_MISMATCH_MSG ) ; let mut previous = E :: Fr :: zero ( ) ; for ( scalar , base ) in scalars . zip ( bases ) { quotient . add ( base , previous . into_bigint ( ) ) ; let coefficient = previous * alpha + scalar . borrow ( ) ; previous = coefficient ; } let evaluation = previous ; let evaluation_proof = quotient . finalize ( ) . into_affine ( ) ; ( evaluation , EvaluationProof ( evaluation_proof ) ) }
Evaluate a single polynomial at the point `alpha`, and provide an evaluation proof along with the evaluation.
Evaluate a single polynomial at the point ` alpha ` and provide an evaluation proof along with the evaluation .
&self
polynomial
&SF
alpha
&E::Fr
max_msm_buffer
usize