use crate::{
log_info,
quantum::types::{qubit::Qubit, qubit_register::QubitRegister},
simulation::types::simulation_report::SimulationReport,
};
impl SimulationReport<Qubit> for Vec<bool> {
fn report(&self, report_for: Qubit) {
let total = self.len() as f64;
let true_count = self.iter().filter(|&p| *p).count() as f64;
let false_count = self.iter().filter(|&p| !*p).count() as f64;
log_info!(
"Simulation report results for {}\n true : {} ({:.2}%)\n false : {} ({:.2}%)\n total : {}",
report_for,
true_count as u32,
(true_count / total) * 100.0,
false_count as u32,
(false_count / total) * 100.0,
self.len()
);
}
}
impl SimulationReport<QubitRegister> for Vec<bool> {
fn report(&self, report_for: QubitRegister) {
let total = self.len() as f64;
let true_count = self.iter().filter(|&p| *p).count() as f64;
let false_count = self.iter().filter(|&p| !*p).count() as f64;
log_info!(
"Simulation report results for {}\n true : {} ({:.2}%)\n false : {} ({:.2}%)\n total : {}",
report_for,
true_count as u32,
(true_count / total) * 100.0,
false_count as u32,
(false_count / total) * 100.0,
self.len()
);
}
}