Skip to main content

b_poly

Function b_poly 

Source
pub fn b_poly<F: Field>(chals: &[F], x: F) -> F
Expand description

Evaluates the challenge polynomial b(X) at point x.

The challenge polynomial is defined as:

b(X) = prod_{i=0}^{k-1} (1 + u_{k-i} * X^{2^i})

where chals = [u_1, ..., u_k] are the IPA challenges.

This polynomial was introduced in Section 3.2 of the Halo paper as part of the Inner Product Argument. It efficiently encodes the folded evaluation point: after k rounds of IPA, the evaluation point vector is reduced to a single value b(x).

The polynomial has degree 2^k - 1 and can be evaluated in O(k) field operations using the product form above. Its coefficients can be computed using b_poly_coefficients.

§Usage

  • In the verifier (ipa.rs), b_poly is called to compute evaluations at the challenge points (e.g., zeta, zeta * omega).
  • In RecursionChallenge::evals, it computes evaluations for the batched polynomial commitment check.

§References