pub(crate) fn open<'a>(
        powers: &Powers<E>,
        p: &P,
        point: P::Point,
        rand: &Randomness<E::Fr, P>,
    ) -> Result<Proof<E>, Error> {
        Self::check_degree_is_too_large(p.degree(), powers.size())?;
        let open_time = start_timer!(|| format!("Opening polynomial of degree {}", p.degree()));

        let witness_time = start_timer!(|| "Computing witness polynomials");
        let (witness_poly, hiding_witness_poly) = Self::compute_witness_polynomial(p, point, rand)?;
        end_timer!(witness_time);

        let proof = Self::open_with_witness_polynomial(
            powers,
            point,
            rand,
            &witness_poly,
            hiding_witness_poly.as_ref(),
        );

        end_timer!(open_time);
        proof
    }
/// On input a polynomial `p` and a point `point`, outputs a proof for the same.
On input a polynomial `p` and a point `point`, outputs a proof for the same.
On input a polynomial ` p ` and a point ` point ` outputs a proof for the same .
pub(crate) fn open<'a>(
        powers: &Powers<E>,
        p: &P,
        point: P::Point,
        rand: &Randomness<E::Fr, P>,
    ) -> Result<Proof<E>, Error> {
        Self::check_degree_is_too_large(p.degree(), powers.size())?;
        let open_time = start_timer!(|| format!("Opening polynomial of degree {}", p.degree()));
        let witness_time = start_timer!(|| "Computing witness polynomials");
        let (witness_poly, hiding_witness_poly) = Self::compute_witness_polynomial(p, point, rand)?;
        end_timer!(witness_time);
        let proof = Self::open_with_witness_polynomial(
            powers,
            point,
            rand,
            &witness_poly,
            hiding_witness_poly.as_ref(),
        );
        end_timer!(open_time);
        proof
    }
pub ( crate ) fn open < ' a > ( powers : & Powers < E > , p : & P , point : P :: Point , rand : & Randomness < E :: Fr , P > , ) -> Result < Proof < E > , Error > { Self :: check_degree_is_too_large ( p . degree ( ) , powers . size ( ) ) ? ; let open_time = start_timer ! ( format ( " " p degree ( ) ) ) ; let witness_time = start_timer ! ( " " ) ; let ( witness_poly , hiding_witness_poly ) = Self :: compute_witness_polynomial ( p , point , rand ) ? ; end_timer ! ( witness_time ) ; let proof = Self :: open_with_witness_polynomial ( powers , point , rand , & witness_poly , hiding_witness_poly . as_ref ( ) , ) ; end_timer ! ( open_time ) ; proof }
On input a polynomial `p` and a point `point`, outputs a proof for the same.
On input a polynomial ` p ` and a point ` point ` outputs a proof for the same .
powers
&Powers<E>
p
&P
point
P::Point
rand
&Randomness<E::Fr, P>