From 3ff71a587ebe28872593ca85e1377d6299c2c122 Mon Sep 17 00:00:00 2001 From: crStiv Date: Sat, 9 Aug 2025 19:01:57 +0200 Subject: [PATCH] Update helpers.rs --- crates/math/src/helpers.rs | 50 +++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/crates/math/src/helpers.rs b/crates/math/src/helpers.rs index 9a04e33b8..60496da9b 100644 --- a/crates/math/src/helpers.rs +++ b/crates/math/src/helpers.rs @@ -18,10 +18,54 @@ pub fn resize_to_next_power_of_two( trace_colums: &mut [alloc::vec::Vec>], ) { trace_colums.iter_mut().for_each(|col| { - // TODO: Remove this unwrap. This may panic if the usize cant be - // casted into a u64. - let col_len = col.len().try_into().unwrap(); + // Convert usize to u64 safely, handling potential overflow + let col_len = match col.len().try_into() { + Ok(len) => len, + Err(_) => { + // If usize is larger than u64::MAX, use u64::MAX as a reasonable fallback + u64::MAX + } + }; let next_power_of_two_len = next_power_of_two(col_len); col.resize(next_power_of_two_len as usize, FieldElement::::zero()) }) } + +#[cfg(test)] +mod tests { + use super::*; + use crate::field::test_fields::u64_test_field::U64TestField; + + #[test] + fn test_resize_to_next_power_of_two() { + let mut trace_columns = vec![ + vec![FieldElement::::one(); 5], + vec![FieldElement::::one(); 3], + ]; + + resize_to_next_power_of_two(&mut trace_columns); + + // First column should be resized to 8 (next power of 2 after 5) + assert_eq!(trace_columns[0].len(), 8); + // Second column should be resized to 4 (next power of 2 after 3) + assert_eq!(trace_columns[1].len(), 4); + + // Check that the original values are preserved + for i in 0..5 { + assert_eq!(trace_columns[0][i], FieldElement::::one()); + } + + for i in 0..3 { + assert_eq!(trace_columns[1][i], FieldElement::::one()); + } + + // Check that new elements are zeros + for i in 5..8 { + assert_eq!(trace_columns[0][i], FieldElement::::zero()); + } + + for i in 3..4 { + assert_eq!(trace_columns[1][i], FieldElement::::zero()); + } + } +}