Skip to content

Commit 31f73ea

Browse files
committed
fix(coset): shl overflow when getting the points
1 parent a7b22e1 commit 31f73ea

File tree

3 files changed

+14
-4
lines changed

3 files changed

+14
-4
lines changed

crates/math/src/circle/cosets.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ impl Coset {
5858
pub fn get_coset_points(coset: &Self) -> Vec<CirclePoint<Mersenne31Field>> {
5959
// g_n the generator of the subgroup of order n.
6060
let generator_n = CirclePoint::get_generator_of_subgroup(coset.log_2_size);
61-
let size: u8 = 1 << coset.log_2_size;
61+
let size: u32 = 1 << coset.log_2_size;
6262
core::iter::successors(Some(coset.shift.clone()), move |prev| {
6363
Some(prev + &generator_n)
6464
})
65-
.take(size.into())
65+
.take(size as usize)
6666
.collect()
6767
}
6868
}

crates/math/src/circle/polynomial.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,4 +297,14 @@ mod tests {
297297

298298
assert_eq!(coeff, new_coeff);
299299
}
300+
301+
#[test]
302+
fn evaluate_and_interpolate_2_pow_20_other_points() {
303+
let coeff: Vec<FieldElement<Mersenne31Field>> =
304+
(0..2_u32.pow(20)).map(|i| FE::from(&i)).collect();
305+
let evals = evaluate_cfft(coeff.clone());
306+
let new_coeff = interpolate_cfft(evals);
307+
308+
assert_eq!(coeff, new_coeff);
309+
}
300310
}

crates/math/src/circle/twiddles.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ mod tests {
6363

6464
#[test]
6565
fn evaluation_twiddles_vectors_length_is_correct() {
66-
let domain = Coset::new_standard(3);
66+
let domain = Coset::new_standard(20);
6767
let config = TwiddlesConfig::Evaluation;
6868
let twiddles = get_twiddles(domain, config);
6969
for i in 0..twiddles.len() - 1 {
@@ -73,7 +73,7 @@ mod tests {
7373

7474
#[test]
7575
fn interpolation_twiddles_vectors_length_is_correct() {
76-
let domain = Coset::new_standard(3);
76+
let domain = Coset::new_standard(20);
7777
let config = TwiddlesConfig::Interpolation;
7878
let twiddles = get_twiddles(domain, config);
7979
for i in 0..twiddles.len() - 1 {

0 commit comments

Comments
 (0)