fn degree_raise_poly_query<F: PrimeField>(
    domain: Radix2CosetDomain<F>,
    degree_to_raise: u64,
    log_coset_size: u64,
    coset_index: &[Boolean<F>],
) -> Result<Vec<FpVar<F>>, SynthesisError> {
    let mut result = Vec::with_capacity(1 << log_coset_size);
    let dist_between_coset_elems = 1 << (domain.dim() - log_coset_size as usize);

    let mut curr = FpVar::constant(domain.offset.pow(&[degree_to_raise]))
        * FpVar::constant(domain.gen())
            .pow_le(coset_index)?
            .pow_by_constant(&[degree_to_raise])?;

    let step = FpVar::constant(
        domain
            .gen()
            .pow(&[dist_between_coset_elems])
            .pow(&[degree_to_raise]),
    );

    for _ in 0..(1 << log_coset_size) {
        result.push(curr.clone());
        curr *= &step;
    }
    Ok(result)
}
/// return evaluation of x^{degree_to_raise} at specific location (with coset
/// structure) For now, we assume the offset of codeword domain is constant.
/// TODO: in the future, the offset can also be an variable.
return evaluation of x^{degree_to_raise} at specific location (with coset
structure) For now, we assume the offset of codeword domain is constant.
TODO: in the future, the offset can also be an variable.
return evaluation of x^ { degree_to_raise } at specific location ( with coset structure ) For now we assume the offset of codeword domain is constant . TODO : in the future the offset can also be an variable .
fn degree_raise_poly_query<F: PrimeField>(
    domain: Radix2CosetDomain<F>,
    degree_to_raise: u64,
    log_coset_size: u64,
    coset_index: &[Boolean<F>],
) -> Result<Vec<FpVar<F>>, SynthesisError> {
    let mut result = Vec::with_capacity(1 << log_coset_size);
    let dist_between_coset_elems = 1 << (domain.dim() - log_coset_size as usize);
    let mut curr = FpVar::constant(domain.offset.pow(&[degree_to_raise]))
        * FpVar::constant(domain.gen())
            .pow_le(coset_index)?
            .pow_by_constant(&[degree_to_raise])?;
    let step = FpVar::constant(
        domain
            .gen()
            .pow(&[dist_between_coset_elems])
            .pow(&[degree_to_raise]),
    );
    for _ in 0..(1 << log_coset_size) {
        result.push(curr.clone());
        curr *= &step;
    }
    Ok(result)
}
fn degree_raise_poly_query < F : PrimeField > ( domain : Radix2CosetDomain < F > , degree_to_raise : u64 , log_coset_size : u64 , coset_index : & [ Boolean < F > ] , ) -> Result < Vec < FpVar < F > > , SynthesisError > { let mut result = Vec :: with_capacity ( 1 << log_coset_size ) ; let dist_between_coset_elems = 1 << ( domain . dim ( ) - log_coset_size as usize ) ; let mut curr = FpVar :: constant ( domain . offset . pow ( & [ degree_to_raise ] ) ) * FpVar :: constant ( domain . gen ( ) ) . pow_le ( coset_index ) ? . pow_by_constant ( & [ degree_to_raise ] ) ? ; let step = FpVar :: constant ( domain . gen ( ) . pow ( & [ dist_between_coset_elems ] ) . pow ( & [ degree_to_raise ] ) , ) ; for _ in 0 .. ( 1 << log_coset_size ) { result . push ( curr . clone ( ) ) ; curr *= & step ; } Ok ( result ) }
return evaluation of x^{degree_to_raise} at specific location (with coset
structure) For now, we assume the offset of codeword domain is constant.
return evaluation of x^ { degree_to_raise } at specific location ( with coset structure ) For now we assume the offset of codeword domain is constant .
domain
Radix2CosetDomain<F>
degree_to_raise
u64
log_coset_size
u64
coset_index
&[Boolean<F>]
domain
Radix2CosetDomain<F>
degree_to_raise
u64
log_coset_size
u64
coset_index
&[Boolean<F>]