Skip to content

Commit 34c6011

Browse files
committed
make polynomial evaluation tests test only one thing
1 parent fe0bac6 commit 34c6011

File tree

1 file changed

+25
-15
lines changed

1 file changed

+25
-15
lines changed

twenty-first/src/shared_math/polynomial.rs

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)