@@ -19,10 +19,8 @@ use super::sparse_mlpoly::{
1919use super :: timer:: Timer ;
2020use flate2:: { write:: ZlibEncoder , Compression } ;
2121use merlin:: Transcript ;
22- use rayon:: prelude:: * ;
2322use serde:: { Deserialize , Serialize } ;
2423use std:: iter:: zip;
25- use std:: sync:: { Arc , Mutex } ;
2624
2725#[ derive( Debug , Serialize , Deserialize , Clone ) ]
2826pub struct R1CSInstance < S : SpartanExtensionField > {
@@ -249,39 +247,52 @@ impl<S: SpartanExtensionField + Send + Sync> R1CSInstance<S> {
249247 Bz . push ( Vec :: new ( ) ) ;
250248 Cz . push ( Vec :: new ( ) ) ;
251249
250+ // Map x and y to x_rev and y_rev so we don't have to do it everytime
251+ let x_step = max_num_cons / num_cons[ p] ;
252+ let x_rev_map = ( 0 ..num_cons[ p] ) . map ( |x|
253+ rev_bits ( x, max_num_cons) / x_step
254+ ) . collect ( ) ;
255+ let y_step = max_num_inputs / num_inputs[ p] ;
256+ let y_rev_map = ( 0 ..num_inputs[ p] ) . map ( |y|
257+ rev_bits ( y, max_num_inputs) / y_step
258+ ) . collect ( ) ;
259+
252260 Az [ p] = ( 0 ..num_proofs[ p] )
253261 . into_par_iter ( )
254262 . map ( |q| {
255263 vec ! [ self . A_list [ p_inst] . multiply_vec_disjoint_rounds(
256- max_num_cons,
257264 num_cons[ p_inst] . clone( ) ,
258265 max_num_inputs,
259266 num_inputs[ p] ,
260267 & z_list[ q] ,
268+ & x_rev_map,
269+ & y_rev_map,
261270 ) ]
262271 } )
263272 . collect ( ) ;
264273 Bz [ p] = ( 0 ..num_proofs[ p] )
265274 . into_par_iter ( )
266275 . map ( |q| {
267276 vec ! [ self . B_list [ p_inst] . multiply_vec_disjoint_rounds(
268- max_num_cons,
269277 num_cons[ p_inst] . clone( ) ,
270278 max_num_inputs,
271279 num_inputs[ p] ,
272280 & z_list[ q] ,
281+ & x_rev_map,
282+ & y_rev_map,
273283 ) ]
274284 } )
275285 . collect ( ) ;
276286 Cz [ p] = ( 0 ..num_proofs[ p] )
277287 . into_par_iter ( )
278288 . map ( |q| {
279289 vec ! [ self . C_list [ p_inst] . multiply_vec_disjoint_rounds(
280- max_num_cons,
281290 num_cons[ p_inst] . clone( ) ,
282291 max_num_inputs,
283292 num_inputs[ p] ,
284293 & z_list[ q] ,
294+ & x_rev_map,
295+ & y_rev_map,
285296 ) ]
286297 } )
287298 . collect ( ) ;
0 commit comments