1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#[macro_export]
macro_rules! test_pairs {
    ($([$t:ty; $n:literal]),*) => {
        {
            let mut rng = thread_rng();
            std::iter::empty()$(.chain((0..$n).map(|_| (
                rand::random::<$t>() as i128,
                rand::random::<$t>() as i128
            ))))*
        }
    };
}

#[macro_export]
macro_rules! test_values {
    ($([$t:ty; $n:literal]),*) => {
        {
            let mut rng = thread_rng();
            std::iter::empty()$(.chain((0..$n).map(|_| 
                rand::random::<$t>() as i128,
            )))*
        }
    };
}

#[macro_export]
macro_rules! printbytes {
    ($d:expr) => {
        println!("{}", $d.iter().map(|d| format!("{d:08b}")).collect::<Vec<_>>().join(" "));
    }
}