stwo_gpu/core/poly/circle/
mod.rs1mod canonic;
2mod domain;
3
4pub use canonic::CanonicCoset;
5pub use domain::{CircleDomain, MAX_CIRCLE_DOMAIN_LOG_SIZE, MIN_CIRCLE_DOMAIN_LOG_SIZE};
6
7#[cfg(test)]
8mod tests {
9 use super::CanonicCoset;
10 use crate::core::utils::bit_reverse_index;
11
12 #[test]
13 fn is_canonic_valid_domain() {
14 let canonic_domain = CanonicCoset::new(4).circle_domain();
15
16 assert!(canonic_domain.is_canonic());
17 }
18
19 #[test]
20 pub fn test_bit_reverse_indices() {
21 let log_domain_size = 7;
22 let log_small_domain_size = 5;
23 let domain = CanonicCoset::new(log_domain_size);
24 let small_domain = CanonicCoset::new(log_small_domain_size);
25 let n_folds = log_domain_size - log_small_domain_size;
26 for i in 0..2usize.pow(log_domain_size) {
27 let point = domain.at(bit_reverse_index(i, log_domain_size));
28 let small_point = small_domain.at(bit_reverse_index(
29 i / 2usize.pow(n_folds),
30 log_small_domain_size,
31 ));
32 assert_eq!(point.repeated_double(n_folds), small_point);
33 }
34 }
35}