pub fn u32_mul<const LOG_MAX_MULTIPLICITY: usize>(
builder: &mut ConstraintSystemBuilder<'_>,
name: impl ToString,
xin_bits: [OracleId; 32],
yin_bits: [OracleId; 32],
) -> Result<[OracleId; 64], Error>
Expand description
u32 Multiplication based on plain lookups for static exponentiation and gkr_exp for dynamic exponentiation
The core idea of this method is to verify the equality $x \cdot y = c$ by checking if
$(g^{xlow} \cdot (g^{2^{16}})^{xhigh})^y = \prod_{i=0}^{3} (g^{2^{(16 \cdot i)}})^{c_i} $, where $c_i$ is a $i$ 16-bit