From ff943138f325621b2b97aaddf429d690555a56e0 Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Wed, 10 Nov 2021 09:38:47 +0100 Subject: [PATCH] Apply suggestions from code review Co-authored-by: Daniel Lubarov --- src/util/partial_products.rs | 26 ++++++++------------------ 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/src/util/partial_products.rs b/src/util/partial_products.rs index 1b3821b6..37b51825 100644 --- a/src/util/partial_products.rs +++ b/src/util/partial_products.rs @@ -10,12 +10,8 @@ pub fn partial_products(v: &[F], max_degree: usize) -> Vec { let mut res = Vec::new(); let mut acc = F::ONE; let chunk_size = max_degree; - let num_chunks = v.len() / chunk_size; - for i in 0..num_chunks { - acc *= v[i * chunk_size..(i + 1) * chunk_size] - .iter() - .copied() - .product(); + for chunk in v.chunks_exact(chunk_size) { + acc *= chunk.iter().copied().product(); res.push(acc); } @@ -40,12 +36,8 @@ pub fn check_partial_products(v: &[F], partials: &[F], max_degree: usi let mut res = Vec::new(); let mut acc = F::ONE; let chunk_size = max_degree; - let num_chunks = v.len() / chunk_size; - for i in 0..num_chunks { - acc *= v[i * chunk_size..(i + 1) * chunk_size] - .iter() - .copied() - .product(); + for chunk in v.chunks_exact(chunk_size) { + acc *= chunk.iter().copied().product(); let new_acc = *partials.next().unwrap(); res.push(acc - new_acc); acc = new_acc; @@ -66,13 +58,11 @@ pub fn check_partial_products_recursively, const D: let mut res = Vec::new(); let mut acc = builder.one_extension(); let chunk_size = max_degree; - let num_chunks = v.len() / chunk_size; - for i in 0..num_chunks { - let mut chunk = v[i * chunk_size..(i + 1) * chunk_size].to_vec(); - chunk.push(acc); - acc = builder.mul_many_extension(&chunk); + for chunk in v.chunks_exact(chunk_size) { + let chunk_product = builder.mul_many_extension(chunk); let new_acc = *partials.next().unwrap(); - res.push(builder.sub_extension(acc, new_acc)); + // Assert that new_acc = acc * chunk_product. + res.push(builder.mul_sub_extension(acc, chunk_product, new_acc)); acc = new_acc; } debug_assert!(partials.next().is_none());