@@ -2525,28 +2525,38 @@ mod test_polynomials {
25252525
25262526 #[ test]
25272527 fn fast_coset_evaluate_test ( ) {
2528- let _1 = BFieldElement :: from ( 1u64 ) ;
2529- let _0 = BFieldElement :: from ( 0u64 ) ;
2530-
25312528 // x^5 + x^3
2532- let poly = Polynomial :: < BFieldElement > :: new ( vec ! [ _0, _0, _0, _1, _0, _1] ) ;
2529+ let poly_coefficients = [ 0 , 0 , 0 , 1 , 0 , 1 ] . map ( BFieldElement :: new) . to_vec ( ) ;
2530+ let poly = Polynomial :: < BFieldElement > :: new ( poly_coefficients) ;
25332531
2532+ let domain_length = 8 ;
25342533 let offset = BFieldElement :: generator ( ) ;
2535- let omega = BFieldElement :: primitive_root_of_unity ( 8 ) . unwrap ( ) ;
2534+ let primitive_root = BFieldElement :: primitive_root_of_unity ( domain_length as u64 ) . unwrap ( ) ;
25362535
2537- let values = poly. fast_coset_evaluate ( offset, omega , 8 ) ;
2536+ let values = poly. fast_coset_evaluate ( offset, primitive_root , domain_length ) ;
25382537
2539- let mut domain = vec ! [ _0; 8 ] ;
2540- domain[ 0 ] = offset;
2541- for i in 1 ..8 {
2542- domain[ i] = domain[ i - 1 ] . to_owned ( ) * omega. to_owned ( ) ;
2543- }
2538+ let poly_interpolated = Polynomial :: fast_coset_interpolate ( offset, primitive_root, & values) ;
2539+ assert_eq ! ( poly, poly_interpolated) ;
2540+ }
25442541
2545- let reinterp = Polynomial :: fast_interpolate ( & domain, & values, omega, 8 ) ;
2546- assert_eq ! ( reinterp, poly) ;
2542+ #[ test]
2543+ fn fast_and_slow_evaluation_are_equivalent ( ) {
2544+ let poly_coefficients = [ 0 , 0 , 0 , 1 , 0 , 1 ] . map ( BFieldElement :: new) . to_vec ( ) ;
2545+ let poly = Polynomial :: < BFieldElement > :: new ( poly_coefficients) ;
25472546
2548- let poly_interpolated = Polynomial :: fast_coset_interpolate ( offset, omega, & values) ;
2549- assert_eq ! ( poly, poly_interpolated) ;
2547+ let domain_length = 8 ;
2548+ let offset = BFieldElement :: generator ( ) ;
2549+ let primitive_root = BFieldElement :: primitive_root_of_unity ( domain_length as u64 ) . unwrap ( ) ;
2550+
2551+ let domain = ( 0 ..domain_length)
2552+ . map ( |i| offset * primitive_root. mod_pow ( i as u64 ) )
2553+ . collect_vec ( ) ;
2554+ let fast_values = poly. fast_evaluate ( & domain, primitive_root, domain_length) ;
2555+
2556+ for ( i, domain_point) in domain. into_iter ( ) . enumerate ( ) {
2557+ let slow_value = poly. evaluate ( & domain_point) ;
2558+ assert_eq ! ( slow_value, fast_values[ i] ) ;
2559+ }
25502560 }
25512561
25522562 #[ test]
0 commit comments