pub fn xor_32_shift<AB: AirBuilder>(
builder: &mut AB,
a: &[<AB as AirBuilder>::Var; 2],
b: &[<AB as AirBuilder>::Var; 32],
c: &[<AB as AirBuilder>::Var; 32],
shift: usize,
)
Expand description
Verify that a = (b ^ (c << shift))
We assume that a is given as 2 16
bit limbs and both b and c are unpacked into 32 individual bits.
We assume that the bits of b have been range checked but not the inputs in c or a. Both of these are
range checked as part of this function.