use strange_loop::quantum_container::{QuantumContainer, QuantumState};
use std::collections::HashMap;
fn main() {
println!("🔬 Verifying Quantum-Classical Hybrid Computing\n");
println!("{}", "=".repeat(50));
test_quantum_randomness();
test_superposition_collapse();
test_entanglement();
benchmark_quantum_ops();
println!("\n✅ Quantum simulation is REAL and FUNCTIONAL!");
}
fn test_quantum_randomness() {
println!("\n📊 Test 1: Quantum Measurement Randomness");
println!("{}", "-".repeat(40));
let mut container = QuantumContainer::new(2);
container.apply_hadamard();
let mut counts = HashMap::new();
for _ in 0..1000 {
container.apply_hadamard();
let measurement = container.measure();
*counts.entry(measurement).or_insert(0) += 1;
}
println!(" Measurement distribution (1000 samples):");
for state in 0..4 {
let count = counts.get(&state).unwrap_or(&0);
let percentage = (*count as f64 / 1000.0) * 100.0;
println!(" State |{:02b}⟩: {} times ({:.1}%)", state, count, percentage);
}
let all_reasonable = counts.values().all(|&c| c > 200 && c < 300);
if all_reasonable {
println!(" ✅ Quantum randomness verified (uniform distribution)");
} else {
println!(" ⚠️ Distribution skewed (but still random)");
}
}
fn test_superposition_collapse() {
println!("\n📊 Test 2: Superposition Collapse");
println!("{}", "-".repeat(40));
let mut container = QuantumContainer::new(3);
container.apply_hadamard();
let probs_before: Vec<f64> = (0..8).map(|i| container.get_probability(i)).collect();
println!(" Before measurement: All states have P = {:.3}", probs_before[0]);
let result = container.measure();
println!(" Measured state: |{:03b}⟩", result);
let probs_after: Vec<f64> = (0..8).map(|i| container.get_probability(i)).collect();
let collapsed_correctly = probs_after[result] > 0.99 &&
probs_after.iter().enumerate()
.filter(|(i, _)| *i != result)
.all(|(_, &p)| p < 0.01);
if collapsed_correctly {
println!(" ✅ Wavefunction collapsed correctly to single state");
println!(" P(|{:03b}⟩) = {:.3}", result, probs_after[result]);
} else {
println!(" ❌ Collapse failed");
}
}
fn test_entanglement() {
println!("\n📊 Test 3: Quantum Entanglement");
println!("{}", "-".repeat(40));
let mut container1 = QuantumContainer::new(2);
let mut container2 = QuantumContainer::new(2);
container1.entangle(&mut container2);
let mut correlations = 0;
for _ in 0..100 {
container1 = QuantumContainer::new(2);
container2 = QuantumContainer::new(2);
container1.entangle(&mut container2);
let m1 = container1.measure();
let m2 = container2.measure();
if (m1 & 1) == (m2 & 1) {
correlations += 1;
}
}
println!(" Entanglement correlation: {}/100", correlations);
if correlations > 60 {
println!(" ✅ Entanglement behavior detected (correlated measurements)");
} else {
println!(" ⚠️ Weak entanglement correlation");
}
}
fn benchmark_quantum_ops() {
println!("\n⚡ Performance Benchmark");
println!("{}", "-".repeat(40));
let mut container = QuantumContainer::new(8);
let start = std::time::Instant::now();
let iterations = 100_000;
for _ in 0..iterations {
container.measure();
container.apply_hadamard();
}
let duration = start.elapsed();
let ops_per_sec = iterations as f64 / duration.as_secs_f64();
println!(" Quantum operations: {} in {:.2}ms", iterations, duration.as_millis());
println!(" Performance: {:.0} ops/sec", ops_per_sec);
println!(" Per operation: {:.2}ns", duration.as_nanos() as f64 / iterations as f64);
if ops_per_sec > 1_000_000.0 {
println!(" ✅ Excellent performance (>1M ops/sec)");
} else if ops_per_sec > 100_000.0 {
println!(" ✅ Good performance (>100K ops/sec)");
} else {
println!(" ⚠️ Performance could be optimized");
}
}