mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-04 06:43:07 +00:00
Filter mul-add constraints (#512)
This commit is contained in:
parent
310493c293
commit
627e80bfd5
@ -47,6 +47,7 @@ pub(crate) fn eval_mul_add<F: Field, P: PackedField<Scalar = F>>(
|
|||||||
let result_canonical_inv = local_values[COL_MUL_ADD_RESULT_CANONICAL_INV];
|
let result_canonical_inv = local_values[COL_MUL_ADD_RESULT_CANONICAL_INV];
|
||||||
|
|
||||||
let computed_output = factor_0 * factor_1 + addend;
|
let computed_output = factor_0 * factor_1 + addend;
|
||||||
|
// TODO: Needs to be filtered by IS_MUL_ADD.
|
||||||
let output = combine_u16s_check_canonical(
|
let output = combine_u16s_check_canonical(
|
||||||
output_1,
|
output_1,
|
||||||
output_2,
|
output_2,
|
||||||
@ -55,7 +56,7 @@ pub(crate) fn eval_mul_add<F: Field, P: PackedField<Scalar = F>>(
|
|||||||
result_canonical_inv,
|
result_canonical_inv,
|
||||||
yield_constr,
|
yield_constr,
|
||||||
);
|
);
|
||||||
yield_constr.constraint(computed_output - output);
|
yield_constr.constraint(is_mul * (computed_output - output));
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn eval_mul_add_recursively<F: RichField + Extendable<D>, const D: usize>(
|
pub(crate) fn eval_mul_add_recursively<F: RichField + Extendable<D>, const D: usize>(
|
||||||
@ -74,6 +75,7 @@ pub(crate) fn eval_mul_add_recursively<F: RichField + Extendable<D>, const D: us
|
|||||||
let result_canonical_inv = local_values[COL_MUL_ADD_RESULT_CANONICAL_INV];
|
let result_canonical_inv = local_values[COL_MUL_ADD_RESULT_CANONICAL_INV];
|
||||||
|
|
||||||
let computed_output = builder.mul_add_extension(factor_0, factor_1, addend);
|
let computed_output = builder.mul_add_extension(factor_0, factor_1, addend);
|
||||||
|
// TODO: Needs to be filtered by IS_MUL_ADD.
|
||||||
let output = combine_u16s_check_canonical_circuit(
|
let output = combine_u16s_check_canonical_circuit(
|
||||||
builder,
|
builder,
|
||||||
output_1,
|
output_1,
|
||||||
@ -84,5 +86,6 @@ pub(crate) fn eval_mul_add_recursively<F: RichField + Extendable<D>, const D: us
|
|||||||
yield_constr,
|
yield_constr,
|
||||||
);
|
);
|
||||||
let diff = builder.sub_extension(computed_output, output);
|
let diff = builder.sub_extension(computed_output, output);
|
||||||
|
let filtered_diff = builder.mul_extension(is_mul, diff);
|
||||||
yield_constr.constraint(builder, diff);
|
yield_constr.constraint(builder, diff);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user