Function u32_mul

Source
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