use super::{probability, Basis, Circuit, Result};
pub fn zz_measurement(distance: usize, merged: usize, p: f64, basis: Basis) -> Result<Circuit> {
zz_measurement_held(distance, distance, merged, distance, p, basis)
}
pub fn zz_measurement_held(distance: usize, pre: usize, merged: usize, post: usize, p: f64, basis: Basis) -> Result<Circuit> {
probability(p, "p")?;
Circuit::from_engine(crate::surgery::zz_circuit(distance, pre, merged, post, p, basis.engine())?)
}
pub fn xx_measurement(distance: usize, merged: usize, p: f64, basis: Basis) -> Result<Circuit> {
probability(p, "p")?;
Circuit::from_engine(crate::surgery::xx_circuit(distance, merged, p, basis.engine())?)
}
pub fn cnot(distance: usize, merged: usize, p: f64, inputs: Basis) -> Result<Circuit> {
probability(p, "p")?;
Circuit::from_engine(crate::surgery::cnot_circuit(distance, merged, p, inputs.engine())?)
}
pub fn repeated_zz(distance: usize, k: usize, merged: usize, p: f64) -> Result<Circuit> {
probability(p, "p")?;
Circuit::from_engine(crate::surgery::repeated_circuit(distance, k, merged, p)?)
}
pub fn line(distance: usize, n: usize, merged: usize, p: f64) -> Result<Circuit> {
probability(p, "p")?;
Circuit::from_engine(crate::surgery::line_circuit(distance, n, merged, p)?)
}