@@ -34,10 +34,10 @@ pub fn divide_by_sub_vanishing_poly(
3434 poly : & DensePolynomial < ScalarField > ,
3535 domain_size : usize ,
3636 coeff : ScalarField ,
37- ) -> ( DensePolynomial < ScalarField > , DensePolynomial < ScalarField > ) {
37+ ) -> DensePolynomial < ScalarField > {
3838 if poly. coeffs . len ( ) < domain_size {
3939 // If degree(poly) < len(Domain), then the quotient is zero, and the entire polynomial is the remainder
40- ( DensePolynomial :: < ScalarField > :: zero ( ) , poly . clone ( ) )
40+ DensePolynomial :: < ScalarField > :: zero ( )
4141 } else {
4242 // Compute the quotient
4343 //
@@ -50,35 +50,16 @@ pub fn divide_by_sub_vanishing_poly(
5050
5151 let mut quotient_vec = poly. coeffs [ domain_size..] . to_vec ( ) ;
5252 //println!("poly.len(): {:?}", poly.len());
53- assert ! ( poly. len( ) / domain_size <= 2 ) ;
53+ // assert!(poly.len() / domain_size <= 2);
5454 for i in 1 ..( poly. len ( ) / domain_size) {
5555 quotient_vec
5656 . iter_mut ( )
5757 . zip ( & poly. coeffs [ domain_size * ( i + 1 ) ..] )
58- . for_each ( |( s, c) | * s += c * & coeff) ;
58+ . for_each ( |( s, c) | * s += c * & ( coeff. pow ( [ i as u64 ] ) ) ) ;
5959 }
6060
61- // Compute the remainder
62- //
63- // `remainder = poly - quotient_vec * (x^domain_size - 1)`
64- //
65- // Note that remainder must be smaller than `domain_size`.
66- // So we can look at only the first `domain_size` terms.
67- //
68- // Therefore,
69- // `remainder = poly.coeffs[0..domain_size] - quotient_vec * (-1)`
70- // i.e.,
71- // `remainder = poly.coeffs[0..domain_size] + quotient_vec`
72- //
73- let mut remainder_vec = poly. coeffs [ 0 ..domain_size] . to_vec ( ) ;
74- remainder_vec
75- . iter_mut ( )
76- . zip ( & quotient_vec)
77- . for_each ( |( s, c) | * s += c * & coeff) ;
78-
7961 let quotient = DensePolynomial :: from_coefficients_vec ( quotient_vec) ;
80- let remainder = DensePolynomial :: from_coefficients_vec ( remainder_vec) ;
81- ( quotient, remainder)
62+ quotient
8263 }
8364}
8465
@@ -633,8 +614,9 @@ mod tests {
633614 Evaluations :: from_vec_and_domain ( data, domain. d2 ) ;
634615
635616 let verifier_ix = 1 ;
636- //let per_node_size = 256;
637- let per_node_size = domain. d1 . size ( ) ;
617+ //let per_node_size = domain.d1.size();
618+ //let per_node_size = domain.d1.size() / 2;
619+ let per_node_size = 1024 ;
638620 let proofs_number = domain. d2 . size ( ) / per_node_size;
639621
640622 let indices: Vec < usize > = ( 0 ..per_node_size)
@@ -669,6 +651,8 @@ mod tests {
669651 let numerator_eval_interpolated = numerator_eval. interpolate ( ) ;
670652
671653 // sanity checking numerator_eval
654+ if numerator_eval_interpolated. len ( ) >= 2 * per_node_size
655+ && numerator_eval_interpolated. len ( ) < 3 * per_node_size
672656 {
673657 let numerator_1 = DensePolynomial {
674658 coeffs : numerator_eval_interpolated[ ..per_node_size] . to_vec ( ) ,
@@ -694,7 +678,7 @@ mod tests {
694678 }
695679
696680 println ! ( "Division" ) ;
697- let ( quot, rem ) =
681+ let quot =
698682 divide_by_sub_vanishing_poly ( & numerator_eval_interpolated, per_node_size, coset_omega) ;
699683
700684 println ! (
@@ -709,8 +693,5 @@ mod tests {
709693 println ! ( "error degree: {:?}" , error. degree( ) ) ;
710694
711695 assert ! ( & quot * & divisor == numerator_eval_interpolated) ;
712- assert ! ( & quot * & divisor + & rem == numerator_eval_interpolated) ;
713- println ! ( "rem degree: {:?}" , rem. degree( ) ) ;
714- assert ! ( rem. is_zero( ) ) ;
715696 }
716697}
0 commit comments