packages feed

quipper-demos-0.9.0.0: Quipper/Demos/SimulationTest.hs

import Quipper
import Quipper.Libraries.Simulation
import System.Random

circuit :: (Qubit, Qubit) -> Circ (Qubit, Qubit)
circuit (q,r) = do
  with_computed code $ \x -> do
    qnot r `controlled` [r,x]
    hadamard r
  return (q,r)

  where
    code = do
      s <- cinit False
      s <- prepare s
      hadamard q
      qnot s `controlled` q
      

circuit2 :: (Qubit, Qubit, Qubit) -> Circ (Qubit, Qubit, Qubit)
circuit2 (s,q,r) = do
  circuit (q,r) `controlled` s
  return (s,q,r)

main =
  print_simple Preview circuit2
  
main2 = do
  g <- newStdGen
  print $ run_generic g (0.0 :: Double) circuit2 (True,True,True)