@@ -117,9 +117,11 @@ impl IdentityPolynomial {
117
117
118
118
impl DensePolynomial {
119
119
pub fn new ( Z : Vec < Scalar > ) -> Self {
120
- let len = Z . len ( ) ;
121
- let num_vars = len. log2 ( ) ;
122
- DensePolynomial { num_vars, Z , len }
120
+ DensePolynomial {
121
+ num_vars : Z . len ( ) . log2 ( ) as usize ,
122
+ len : Z . len ( ) ,
123
+ Z ,
124
+ }
123
125
}
124
126
125
127
pub fn get_num_vars ( & self ) -> usize {
@@ -143,7 +145,7 @@ impl DensePolynomial {
143
145
}
144
146
145
147
#[ cfg( feature = "multicore" ) ]
146
- fn commit_inner ( & self , blinds : & Vec < Scalar > , gens : & MultiCommitGens ) -> PolyCommitment {
148
+ fn commit_inner ( & self , blinds : & [ Scalar ] , gens : & MultiCommitGens ) -> PolyCommitment {
147
149
let L_size = blinds. len ( ) ;
148
150
let R_size = self . Z . len ( ) / L_size ;
149
151
assert_eq ! ( L_size * R_size , self . Z . len( ) ) ;
@@ -187,9 +189,9 @@ impl DensePolynomial {
187
189
let R_size = right_num_vars. pow2 ( ) ;
188
190
assert_eq ! ( L_size * R_size , n) ;
189
191
190
- let blinds = if random_tape . is_some ( ) {
192
+ let blinds = if let Some ( t ) = random_tape {
191
193
PolyCommitmentBlinds {
192
- blinds : random_tape . unwrap ( ) . random_vector ( b"poly_blinds" , L_size ) ,
194
+ blinds : t . random_vector ( b"poly_blinds" , L_size ) ,
193
195
}
194
196
} else {
195
197
PolyCommitmentBlinds {
@@ -352,7 +354,7 @@ impl PolyEvalProof {
352
354
& LZ ,
353
355
& LZ_blind ,
354
356
& R ,
355
- & Zr ,
357
+ Zr ,
356
358
blind_Zr,
357
359
) ;
358
360
@@ -404,7 +406,7 @@ mod tests {
404
406
use super :: * ;
405
407
use rand:: rngs:: OsRng ;
406
408
407
- fn evaluate_with_LR ( Z : & Vec < Scalar > , r : & Vec < Scalar > ) -> Scalar {
409
+ fn evaluate_with_LR ( Z : & [ Scalar ] , r : & [ Scalar ] ) -> Scalar {
408
410
let eq = EqPolynomial :: new ( r. to_vec ( ) ) ;
409
411
let ( L , R ) = eq. compute_factored_evals ( ) ;
410
412
@@ -427,25 +429,26 @@ mod tests {
427
429
428
430
#[ test]
429
431
fn check_polynomial_evaluation ( ) {
430
- let mut Z : Vec < Scalar > = Vec :: new ( ) ; // Z = [1, 2, 1, 4]
431
- Z . push ( Scalar :: one ( ) ) ;
432
- Z . push ( ( 2 as usize ) . to_scalar ( ) ) ;
433
- Z . push ( ( 1 as usize ) . to_scalar ( ) ) ;
434
- Z . push ( ( 4 as usize ) . to_scalar ( ) ) ;
432
+ // Z = [1, 2, 1, 4]
433
+ let Z = vec ! [
434
+ Scalar :: one( ) ,
435
+ ( 2_usize ) . to_scalar( ) ,
436
+ ( 1_usize ) . to_scalar( ) ,
437
+ ( 4_usize ) . to_scalar( ) ,
438
+ ] ;
439
+
435
440
// r = [4,3]
436
- let mut r: Vec < Scalar > = Vec :: new ( ) ;
437
- r. push ( ( 4 as usize ) . to_scalar ( ) ) ;
438
- r. push ( ( 3 as usize ) . to_scalar ( ) ) ;
441
+ let r = vec ! [ ( 4_usize ) . to_scalar( ) , ( 3_usize ) . to_scalar( ) ] ;
439
442
440
443
let eval_with_LR = evaluate_with_LR ( & Z , & r) ;
441
444
let poly = DensePolynomial :: new ( Z ) ;
442
445
443
446
let eval = poly. evaluate ( & r) ;
444
- assert_eq ! ( eval, ( 28 as usize ) . to_scalar( ) ) ;
447
+ assert_eq ! ( eval, ( 28_usize ) . to_scalar( ) ) ;
445
448
assert_eq ! ( eval_with_LR, eval) ;
446
449
}
447
450
448
- pub fn compute_factored_chis_at_r ( r : & Vec < Scalar > ) -> ( Vec < Scalar > , Vec < Scalar > ) {
451
+ pub fn compute_factored_chis_at_r ( r : & [ Scalar ] ) -> ( Vec < Scalar > , Vec < Scalar > ) {
449
452
let mut L : Vec < Scalar > = Vec :: new ( ) ;
450
453
let mut R : Vec < Scalar > = Vec :: new ( ) ;
451
454
@@ -484,7 +487,7 @@ mod tests {
484
487
( L , R )
485
488
}
486
489
487
- pub fn compute_chis_at_r ( r : & Vec < Scalar > ) -> Vec < Scalar > {
490
+ pub fn compute_chis_at_r ( r : & [ Scalar ] ) -> Vec < Scalar > {
488
491
let ell = r. len ( ) ;
489
492
let n = ell. pow2 ( ) ;
490
493
let mut chis: Vec < Scalar > = Vec :: new ( ) ;
@@ -505,15 +508,12 @@ mod tests {
505
508
506
509
pub fn compute_outerproduct ( L : Vec < Scalar > , R : Vec < Scalar > ) -> Vec < Scalar > {
507
510
assert_eq ! ( L . len( ) , R . len( ) ) ;
508
-
509
- let mut O : Vec < Scalar > = Vec :: new ( ) ;
510
- let m = L . len ( ) ;
511
- for i in 0 ..m {
512
- for j in 0 ..m {
513
- O . push ( L [ i] * R [ j] ) ;
514
- }
515
- }
516
- O
511
+ ( 0 ..L . len ( ) )
512
+ . map ( |i| ( 0 ..R . len ( ) ) . map ( |j| L [ i] * R [ j] ) . collect :: < Vec < Scalar > > ( ) )
513
+ . collect :: < Vec < Vec < Scalar > > > ( )
514
+ . into_iter ( )
515
+ . flatten ( )
516
+ . collect :: < Vec < Scalar > > ( )
517
517
}
518
518
519
519
#[ test]
@@ -563,20 +563,18 @@ mod tests {
563
563
564
564
#[ test]
565
565
fn check_polynomial_commit ( ) {
566
- let mut Z : Vec < Scalar > = Vec :: new ( ) ; // Z = [1, 2, 1, 4]
567
- Z . push ( ( 1 as usize ) . to_scalar ( ) ) ;
568
- Z . push ( ( 2 as usize ) . to_scalar ( ) ) ;
569
- Z . push ( ( 1 as usize ) . to_scalar ( ) ) ;
570
- Z . push ( ( 4 as usize ) . to_scalar ( ) ) ;
571
-
566
+ let Z = vec ! [
567
+ ( 1_usize ) . to_scalar( ) ,
568
+ ( 2_usize ) . to_scalar( ) ,
569
+ ( 1_usize ) . to_scalar( ) ,
570
+ ( 4_usize ) . to_scalar( ) ,
571
+ ] ;
572
572
let poly = DensePolynomial :: new ( Z ) ;
573
573
574
574
// r = [4,3]
575
- let mut r: Vec < Scalar > = Vec :: new ( ) ;
576
- r. push ( ( 4 as usize ) . to_scalar ( ) ) ;
577
- r. push ( ( 3 as usize ) . to_scalar ( ) ) ;
575
+ let r = vec ! [ ( 4_usize ) . to_scalar( ) , ( 3_usize ) . to_scalar( ) ] ;
578
576
let eval = poly. evaluate ( & r) ;
579
- assert_eq ! ( eval, ( 28 as usize ) . to_scalar( ) ) ;
577
+ assert_eq ! ( eval, ( 28_usize ) . to_scalar( ) ) ;
580
578
581
579
let gens = PolyCommitmentGens :: new ( poly. get_num_vars ( ) , b"test-two" ) ;
582
580
let ( poly_commitment, blinds) = poly. commit ( & gens, None ) ;
0 commit comments