Skip to main content

quantrs2_core/quantum_supremacy_algorithms/
functions.rs

1//! Auto-generated module
2//!
3//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
4
5use super::types::{
6    ManyBodySystemType, Photon, PhotonSource, QuantumGateType, QuantumSupremacyEngine,
7    RandomCircuitParameters, SamplingParameters,
8};
9
10#[cfg(test)]
11mod tests {
12    use super::*;
13    #[test]
14    fn test_quantum_supremacy_engine_creation() {
15        let engine = QuantumSupremacyEngine::new(50);
16        assert_eq!(
17            engine.random_circuit_sampling.circuit_generator.qubit_count,
18            50
19        );
20    }
21    #[test]
22    fn test_random_circuit_sampling() {
23        let mut engine = QuantumSupremacyEngine::new(20);
24        let circuit_params = RandomCircuitParameters {
25            qubit_count: 20,
26            depth: 20,
27            gate_set: vec![QuantumGateType::Hadamard, QuantumGateType::CNOT],
28        };
29        let sampling_params = SamplingParameters {
30            sample_count: 1000,
31            error_mitigation: true,
32        };
33        let result = engine.execute_random_circuit_sampling(circuit_params, sampling_params);
34        assert!(result.is_ok());
35        let supremacy_result = result.expect("Random circuit sampling should succeed");
36        assert!(supremacy_result.supremacy_factor > 1.0);
37        assert!(supremacy_result.verification_confidence > 0.5);
38    }
39    #[test]
40    fn test_boson_sampling() {
41        let mut engine = QuantumSupremacyEngine::new(20);
42        let result = engine.execute_boson_sampling(6, 20, 10000);
43        assert!(result.is_ok());
44        let boson_result = result.expect("Boson sampling should succeed");
45        assert_eq!(boson_result.photon_count, 6);
46        assert_eq!(boson_result.mode_count, 20);
47        assert!(boson_result.supremacy_factor > 1.0);
48    }
49    #[test]
50    fn test_iqp_sampling() {
51        let mut engine = QuantumSupremacyEngine::new(30);
52        let result = engine.execute_iqp_sampling(30, 10, 100000);
53        assert!(result.is_ok());
54        let iqp_result = result.expect("IQP sampling should succeed");
55        assert_eq!(iqp_result.circuit_depth, 10);
56        assert!(iqp_result.computational_advantage > 1.0);
57        assert!(iqp_result.hardness_verified);
58    }
59    #[test]
60    fn test_quantum_simulation_advantage() {
61        let mut engine = QuantumSupremacyEngine::new(40);
62        let result =
63            engine.execute_quantum_simulation_advantage(ManyBodySystemType::Hubbard, 40, 1.0);
64        assert!(result.is_ok());
65        let simulation_result = result.expect("Quantum simulation should succeed");
66        assert_eq!(simulation_result.system_size, 40);
67        assert!(simulation_result.advantage_factor > 1.0);
68        assert!(simulation_result.verification_passed);
69    }
70    #[test]
71    fn test_supremacy_benchmarking() {
72        let mut engine = QuantumSupremacyEngine::new(50);
73        let report = engine.benchmark_quantum_supremacy();
74        assert!(report.random_circuit_advantage > 1e6);
75        assert!(report.boson_sampling_advantage > 1e6);
76        assert!(report.iqp_sampling_advantage > 1e6);
77        assert!(report.quantum_simulation_advantage > 1e6);
78        assert!(report.verification_efficiency > 1.0);
79        assert!(report.overall_supremacy_factor > 1e6);
80    }
81    #[test]
82    fn test_photon_source_generation() {
83        let source = PhotonSource::spdc();
84        let photon = source.generate_photon();
85        assert!(photon.is_ok());
86        let p = photon.expect("Photon generation should succeed");
87        assert_eq!(p.wavelength, 800e-9);
88    }
89}