use crate::bloom_sol::struct_def::CountingBloomFilter;
impl CountingBloomFilter {
/// Estimates the false positive probability (error rate) for a Bloom filter.
///
/// This uses the standard Bloom filter approximation: (1 - e^(-k * n / m))^k
///
/// # Arguments
/// * `n` - Number of elements inserted
/// * `k` - Number of hash functions
/// * `m` - Number of counters (size of the filter)
pub fn estimated_false_positive_rate(n: usize, k: usize, m: usize) -> f64 {
if m == 0 {
return 1.0;
}
let n_f = n as f64;
let k_f = k as f64;
let m_f = m as f64;
let exp_term = (-k_f * n_f / m_f).exp();
(1.0 - exp_term).powf(k_f)
}
}