Quantum Computing library leveraging graph building to build efficient quantum circuit simulations.
See all the examples in the examples directory of the Github repository.
Here's an example of a small circuit where two groups of qubits are swapped conditioned on a third. This circuit is very small, only three operations plus a measurement, so the boilerplate can look quite large in comparison, but that setup provides the ability to construct circuits easily and safely when they do get larger. ```rust use qip::*;
// Setup inputs let mut b = OpBuilder::new(); let q = b.qubit(); let ra = b.register(3)?; let rb = b.register(3)?;
// We will want to feed in some inputs later. let ha = ra.handle(); let hb = rb.handle();
// Define circuit let q = b.hadamard(q);
let (q, _, _) = b.cswap(q, ra, rb)?; let q = b.hadamard(q);
let (q, m1) = b.measure(q);
// Print circuit diagram qip::run_debug(&q)?;
// Initialize ra to |0> and rb to |1> using their handles. // Make an initial state: |0,000,001> let initialstate = [ha.makeinitfromindex(0)?, hb.makeinitfrom_index(1)?];
// Run circuit
let (, measured) = runlocalwithinit::
println!("{:?}", measured.get_measurement(&m1)); ```