quipper-demos-0.9.0.0: Quipper/Demos/Example3.hs
import Quipper
example1 :: (Qubit,Qubit,Qubit,Qubit) -> Circ (Qubit,Qubit,Qubit,Qubit)
example1 (q, a, b, c) = do
hadamard a
qnot_at c `controlled` [a, b]
hadamard q `controlled` [c]
qnot_at c `controlled` [a, b]
hadamard a
return (q, a, b, c)
example3 :: (Qubit,Qubit,Qubit,Qubit,Qubit,Qubit) -> Circ (Qubit,Qubit,Qubit,Qubit,Qubit,Qubit)
example3 (q, a, b, c, d, e) = do
example1 (q, a, b, c)
with_controls (d .==. 0 .&&. e .==. 1) $ do
example1 (q, a, b, c)
example1 (q, a, b, c)
example1 (q, a, b, c)
return (q, a, b, c, d, e)
main = print_simple Preview example3