pub mod admission_hook;
pub mod bell;
pub mod ca_mps;
pub mod ca_peps;
pub mod clifford;
pub mod control_plane;
pub mod decoder;
pub mod dmrg;
pub mod error;
pub mod feynman;
pub mod fusion;
pub mod grover;
pub mod libirrep_qec;
pub mod mpdo;
pub mod qgtl;
pub mod noise;
pub mod qaoa;
pub mod scheduler;
pub mod state;
pub mod surface_code;
pub mod tdvp;
pub mod token_bucket;
pub mod topology;
pub mod vqe;
pub mod z2_lgt;
pub use ca_mps::{
gauge_warmstart, status_string, var_d_run, z2_lgt_1d_build,
z2_lgt_1d_gauss_law, CaMps, StatusModule, VarDConfig, Warmstart,
};
pub use error::{QuantumError, Result};
pub use feynman::{FeynmanDiagram, ParticleType};
pub use mpdo::{Mpdo, PauliCode};
pub use state::{QuantumState, MAX_QUBITS};
pub use topology::{
bhz_z2, chern_qwz_parallel_transport, chern_qwz_proj, hofstadter_chern,
kane_mele_z2, kitaev_chain_z2, qwz_chern, ssh_winding, ChernKpm,
};
pub mod prelude {
pub use crate::ca_mps::{CaMps, VarDConfig, Warmstart};
pub use crate::error::{QuantumError, Result};
pub use crate::feynman::{FeynmanDiagram, ParticleType};
pub use crate::mpdo::{Mpdo, PauliCode};
pub use crate::state::{QuantumState, MAX_QUBITS};
pub use crate::topology::{
bhz_z2, chern_qwz_parallel_transport, chern_qwz_proj,
hofstadter_chern, kane_mele_z2, kitaev_chain_z2, qwz_chern,
ssh_winding, ChernKpm,
};
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_bell_inequality() {
let mut state = QuantumState::new(2).unwrap();
state.h(0).cnot(0, 1);
let zz = state.correlation_zz(0, 1).unwrap();
assert!((zz - 1.0).abs() < 1e-10, "ZZ correlation should be 1.0");
let z0 = state.expectation_z(0).unwrap();
let z1 = state.expectation_z(1).unwrap();
assert!(z0.abs() < 1e-10, "⟨Z₀⟩ should be 0");
assert!(z1.abs() < 1e-10, "⟨Z₁⟩ should be 0");
}
#[test]
fn test_qft() {
let mut state = QuantumState::new(3).unwrap();
state.qft(&[0, 1, 2]);
let probs = state.probabilities();
let expected = 1.0 / 8.0;
for p in probs.iter() {
assert!((p - expected).abs() < 1e-10);
}
}
}