pub fn byte_sliced_modular_mul<U, F, LevelIn: TowerLevel<OracleId>, LevelOut: TowerLevel<OracleId, Base = LevelIn>>(
builder: &mut ConstraintSystemBuilder<'_, U, F>,
name: impl ToString,
mult_a: &LevelIn::Data,
mult_b: &LevelIn::Data,
modulus_input: &[u8],
log_size: usize,
zero_byte_oracle: OracleId,
zero_carry_oracle: OracleId,
) -> Result<LevelIn::Data, Error>where
U: Pod + UnderlierType + PackScalar<BinaryField1b> + PackScalar<BinaryField8b> + PackScalar<BinaryField16b> + PackScalar<BinaryField32b> + PackScalar<F>,
PackedType<U, BinaryField8b>: PackedFieldIndexable,
PackedType<U, BinaryField16b>: PackedFieldIndexable,
PackedType<U, BinaryField32b>: PackedFieldIndexable,
F: TowerField + BinaryField + ExtensionField<BinaryField8b> + ExtensionField<BinaryField16b> + ExtensionField<BinaryField32b>,
<F as WithUnderlier>::Underlier: From<u8>,