in air/src/air/mod.rs [500:524]
fn get_deep_composition_coefficients<E, H>(
&self,
public_coin: &mut RandomCoin<Self::BaseField, H>,
) -> Result<DeepCompositionCoefficients<E>, RandomCoinError>
where
E: FieldElement<BaseField = Self::BaseField>,
H: Hasher,
{
let mut t_coefficients = Vec::new();
for _ in 0..self.trace_width() {
t_coefficients.push(public_coin.draw_triple()?);
}
// self.ce_blowup_factor() is the same as number of composition columns
let mut c_coefficients = Vec::new();
for _ in 0..self.ce_blowup_factor() {
c_coefficients.push(public_coin.draw()?);
}
Ok(DeepCompositionCoefficients {
trace: t_coefficients,
constraints: c_coefficients,
degree: public_coin.draw_pair()?,
})
}