use crate::constraint_system::{TurboComposer, Witness};
use dusk_bls12_381::BlsScalar;
#[derive(Debug, Clone, Copy)]
pub(crate) struct WnafRound<T: Into<Witness>> {
pub acc_x: T,
pub acc_y: T,
pub accumulated_bit: T,
pub xy_alpha: T,
pub x_beta: BlsScalar,
pub y_beta: BlsScalar,
pub xy_beta: BlsScalar,
}
impl TurboComposer {
pub(crate) fn fixed_group_add<T: Into<Witness> + Copy>(
&mut self,
wnaf_round: WnafRound<T>,
) {
self.w_l.push(wnaf_round.acc_x.into());
self.w_r.push(wnaf_round.acc_y.into());
self.w_o.push(wnaf_round.xy_alpha.into());
self.w_4.push(wnaf_round.accumulated_bit.into());
self.q_l.push(wnaf_round.x_beta);
self.q_r.push(wnaf_round.y_beta);
self.q_c.push(wnaf_round.xy_beta);
self.q_o.push(BlsScalar::zero());
self.q_fixed_group_add.push(BlsScalar::one());
self.q_variable_group_add.push(BlsScalar::zero());
self.q_m.push(BlsScalar::zero());
self.q_4.push(BlsScalar::zero());
self.q_arith.push(BlsScalar::zero());
self.q_range.push(BlsScalar::zero());
self.q_logic.push(BlsScalar::zero());
self.q_lookup.push(BlsScalar::zero());
self.perm.add_variables_to_map(
wnaf_round.acc_x,
wnaf_round.acc_y,
wnaf_round.xy_alpha,
wnaf_round.accumulated_bit,
self.n,
);
self.n += 1;
}
}