Merge pull request #49 from mir-protocol/mul_extension_opt

Little circuit optimization
This commit is contained in:
Daniel Lubarov 2021-05-24 23:01:41 -07:00 committed by GitHub
commit 3833d0579b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -56,15 +56,14 @@ impl<F: Field> CircuitBuilder<F> {
where
F: Extendable<D>,
{
let w = self.constant(F::Extension::W);
let mut res = [self.zero(); D];
for i in 0..D {
for j in 0..D {
res[(i + j) % D] = if i + j < D {
self.mul_add(a.0[i], b.0[j], res[(i + j) % D])
} else {
let tmp = self.mul(a.0[i], b.0[j]);
self.mul_add(w, tmp, res[(i + j) % D])
// W * a[i] * b[i] + res[(i + j) % D]
self.arithmetic(F::Extension::W, a.0[i], b.0[i], F::Extension::ONE, res[(i + j) % D]);
}
}
}