# newsynth

Exact and approximate synthesis of quantum circuits http://www.mathstat.dal.ca/~selinger/newsynth/

Latest on Hackage: | 0.3.0.3 |

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

**Neil J. Ross, Peter Selinger**

**selinger@mathstat.dal.ca**

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.

## Changes

v0.3.0.3 2016/07/27

(2016/07/27) PS1 - relaxed package dependencies to accommodate

older versions of ghc and base.

v0.3.0.2 2015/08/15

(2015/08/15) PS1 - relaxed dependencies.

(2015/08/15) PS1 - added IncoherentInstances to

Quantum.Synthesis.LaTeX.

v0.3.0.1 2015/05/15

(2015/05/15) PS1 - added a missing source file

v0.3 2015/05/15

(2015/05/15) NJR, PS1 - added a new --phase option for

approximation up to a phase.

(2015/05/15) NJR, PS1 - various bug fixes.

v0.2.0.1 2014/10/08

(2014/10/07) PS1 - added Applicative and Functor instances to

silence compiler warnings.

(2014/10/06) PS1 - updated dependencies for compatibility with

base 4.7 and random 1.1.

(2014/09/05) PS1 - fixed a bug where the actual T-count was output

instead of the lower bound.

v0.2 2014/03/12

(2014/03/12) NJR, PS1 - Added the new gridsynth algorithm from

N. J. Ross and P. Selinger, "Optimal ancilla-free Clifford+T

approximation of z-rotations", arXiv:1403.2975. Added a module

GridProblem for solving one- and two-dimensional grid equations,

and a module Diophantine for solving a Diophantine equation.

Removed the now obsolete Newsynth algorithm, and replaced it by a

backward compatibile interface to the new algorithm. New modules

GridSynth, QuadraticEquation, and StepComp. Additions and minor

improvements to EuclideanDomain, LaTeX, Matrix, and Ring. New

executable gridsynth.

v0.1.1.0 2014/02/05

(2014/02/04) PS1 - new functions euclid_divides and euclid_associates.

(2014/02/04) PS1 - changed 'lobit' and improved its asymptotic

efficiency.

(2014/02/04) PS1 - fixed a bug in the ShowLaTeX instance of Rational.

(2014/02/04) PS1 - added profiling options.

(2014/02/03) PS1 - eliminated common subexpressions in gridpoints.

(2014/02/03) PS1 - made fromDyadic an operation of the HalfRing

class, and improved its efficiency.

v0.1.0.0 2013/12/14

(2013/12/13) PS1 - added new rings DComplex and QComplex.

Improvements to the ring QOmega.

(2013/12/13) PS1 - more uniform naming of rings. Old names

DInteger, DReal, EReal, DComplex, EComplex have become ZRootTwo,

DRootTwo, QRootTwo, DRComplex, and QRComplex, respectively.

(2013/12/13) PS1 - adjusted output syntax to remove Unicode and

make output parseable.

(2013/12/13) PS1 - refactored as a Cabal package.

(2013/12/11) PS1 - removed erroneous Adjoint2 instances for Double

and Float.

(2013/12/11) PS1 - removed dependency on numbers package, removed

Random instance for FixedPrec (this is now in fixedprec package).

(2013/12/11) PS1 - added EmptyDataDecls pragma, to keep GHC happy.

(2013/12/10) PS1 - removed some unnecessary type class

dependencies.

(2013/09/25) PS1 - added "alternate" version of multi-qubit

synthesis algorithm, using only generators of determinant 1 if

possible.

(2013/09/25) PS1 - renamed some constructors and deconstructors

for matrices.

Release 2013/09/02

Released as part of Quipper 0.5.

(2013/07/08) PS1 - moved definitions of U2 and SO3 to Matrix.hs.

(2013/07/05) PS1 - added RotationDecomposition module.

Release 2013/06/19

Initial public release, as part of Quipper 0.4.