dsalgo/
test_fast_prime_counting.rs

1//! internal test module.
2//! commonly used for testing fast prime counting algorithms.
3//! which can compute pi(N <= 10^10) in approximately 1.0 sec.
4
5use crate::{
6    prime_pi_power_of_10::PRIME_PI_POWER_OF_10,
7    prime_pi_table_from_enumerate_primes::prime_pi_table,
8};
9
10#[allow(dead_code)]
11
12pub(crate) fn test_fast_prime_counting<F>(pi: &F)
13where
14    F: Fn(u64) -> u64,
15{
16    const N: u32 = 1 << 10;
17
18    let ans = prime_pi_table(N as usize);
19
20    for i in 0..N {
21        let res = pi(i as u64) as u32;
22
23        assert_eq!(ans[i as usize], res);
24    }
25
26    for i in 0..11 {
27        let ans = PRIME_PI_POWER_OF_10[i as usize] as u64;
28
29        let res = pi(10u64.pow(i as u32));
30
31        assert_eq!(ans, res);
32    }
33}