poulpy/examples/main.rs
examples/main.rsRaw
1extern crate math;
2use math::ring::Ring;
3use math::modulus::prime::Prime;
4use math::dft::ntt::Table;
5
6fn main() {
7 // Example usage of `Prime<u64>`
8 let q_base: u64 = 0x1fffffffffe00001; // Example prime base
9 let q_power: usize = 1; // Example power
10 let mut prime_instance: Prime<u64> = Prime::<u64>::new(q_base, q_power);
11
12 // Display the fields of `Prime` to verify
13 println!("Prime instance created:");
14 println!("q: {}", prime_instance.q());
15 println!("q_base: {}", prime_instance.q_base());
16 println!("q_power: {}", prime_instance.q_power());
17
18 let n: u64 = 1024;
19 let nth_root: u64 = n<<1;
20
21 let ntt_table: Table<u64> = Table::<u64>::new(prime_instance, nth_root);
22
23 let mut a: Vec<u64> = vec![0; (nth_root >> 1) as usize];
24
25 for i in 0..a.len(){
26 a[i] = i as u64;
27 }
28
29 println!("{:?}", a);
30
31 ntt_table.forward_inplace(&mut a);
32
33 println!("{:?}", a);
34
35 ntt_table.backward_inplace(&mut a);
36
37 println!("{:?}", a);
38
39 let r : Ring<u64> = Ring::<u64>::new(n as usize, q_base, q_power);
40
41}