-- The name of the package.
name:                newsynth

-- The package version.  See the Haskell package versioning policy (PVP) 
-- for standards guiding when and how versions should be incremented.
-- http://www.haskell.org/haskellwiki/Package_versioning_policy
-- PVP summary:      +-+------- breaking API changes
--                   | | +----- non-breaking API additions
--                   | | | +--- code changes with no API change
version:             0.2

-- A short (one-line) description of the package.
synopsis:            Exact and approximate synthesis of quantum circuits

-- A longer description of the package.
description:         

  A library of algorithms for exact and approximate synthesis of
  quantum circuits over the Clifford+T gate set. This includes, among
  other things:
  .
  * "Quantum.Synthesis.GridSynth": an efficient single-qubit
    approximate synthesis algorithm. From N. J. Ross and P. Selinger,
    \"Optimal ancilla-free Clifford+/T/ approximation of 
    /z/-rotations\", <http://arxiv.org/abs/1403.2975>.
  .
  * "Quantum.Synthesis.MultiQubitSynthesis": multi-qubit exact
    synthesis algorithms. From B. Giles and P. Selinger, \"Exact
    synthesis of multiqubit Clifford+/T/ circuits\", Physical Review A
    87, 032332, 2013, <http://arxiv.org/abs/1212.0506>.
  .
  * "Quantum.Synthesis.CliffordT": the computation of
    Matsumoto-Amano normal forms. From K. Matsumoto and K. Amano,
    \"Representation of Quantum Circuits with Clifford and π\/8
    Gates\", <http://arxiv.org/abs/0806.3834>.
  .
  * "Quantum.Synthesis.RotationDecomposition": an algorithm for
    decomposing multi-qubit unitary operators into one- and two-level
    unitaries. See e.g. Section 4.5.1 of M. A. Nielsen and
    I. L. Chuang, \"Quantum Computation and Quantum Information\",
    Cambridge University Press, 2002.
  .
  This package also provides an easy-to-use command line tool for
  single-qubit approximate synthesis.

-- URL for the project homepage or repository.
homepage:            http://www.mathstat.dal.ca/~selinger/newsynth/

-- The license under which the package is released.
license:             GPL-3

-- The file containing the license text.
license-file:        LICENSE

-- The package author(s).
author:              Neil J. Ross, Peter Selinger

-- An email address to which users can send suggestions, bug reports, and 
-- patches.
maintainer:          selinger@mathstat.dal.ca

-- A copyright notice.
copyright:           Copyright (c) 2012-2014 Neil J. Ross and Peter Selinger

-- A classification category for future use by the package catalogue
-- Hackage. These categories have not yet been specified, but the
-- upper levels of the module hierarchy make a good start.
category:            Quantum

-- The type of build used by this package.
build-type:          Custom

-- Constraint on the version of Cabal needed to build this package.
cabal-version:       >=1.8

-- A list of additional files to be included in source distributions
-- built with setup sdist.
extra-source-files:  images/*.png ChangeLog

library
  -- Modules exported by the library.
  exposed-modules:     Quantum.Synthesis.Newsynth, Quantum.Synthesis.Matrix, Quantum.Synthesis.LaTeX, Quantum.Synthesis.RotationDecomposition, Quantum.Synthesis.ArcTan2, Quantum.Synthesis.EulerAngles, Quantum.Synthesis.EuclideanDomain, Quantum.Synthesis.SymReal, Quantum.Synthesis.Ring, Quantum.Synthesis.Clifford, Quantum.Synthesis.MultiQubitSynthesis, Quantum.Synthesis.CliffordT, Quantum.Synthesis.Ring.FixedPrec, Quantum.Synthesis.Ring.SymReal, Quantum.Synthesis.GridProblems Quantum.Synthesis.GridSynth Quantum.Synthesis.Diophantine Quantum.Synthesis.StepComp Quantum.Synthesis.QuadraticEquation
  
  -- Modules included in this library but not exported.
  -- other-modules:       
  
  -- Other library packages from which modules are imported.
  build-depends:       base ==4.6.*, random ==1.0.*, fixedprec >= 0.2.2 && < 0.3, superdoc ==0.1.*, containers ==0.5.*

  -- Additional options for GHC when the package is built with
  -- profiling enabled.
  ghc-prof-options:    -prof -auto-all

executable gridsynth
  -- .hs or .lhs file containing the Main module.
  main-is:             gridsynth.hs

  -- Root directories for the module hierarchy.
  hs-source-dirs:      programs

  -- Modules included in this executable, other than Main.
  other-modules:       CommandLine
  
  -- Other library packages from which modules are imported.
  build-depends:       base ==4.6.*, random ==1.0.*, time ==1.4.*, superdoc ==0.1.*, newsynth