The Quantum Software group at IQC


As a growing array of quantum technologies are developed, we will need “quantum software”. We’ll need software for the systems controlling the quantum hardware, and we’ll need software to be run on the quantum hardware.

The main focus of our quantum software group is to develop a range of tools for the synthesis and optimization of quantum software to be run on fault-tolerant quantum computing hardware. See stage 4 in Figure 1 of this nice survey by Devoret and Schoelkopf. Some of our tools may also be applied to physical layer gates.

This page overviews the activities of our group and points to tools that we have developed over the years.


Picture of Michele Mosca

Michele Mosca

Professor, PI

Vlad Gheorghiu

Postdoctoral Researcher

Picture of Sebastian Verschoor

Sebastian Verschoor

PhD student

University of Waterloo


Quantum++: A modern C++ quantum computing library

Vlad Gheorghiu

PLoS ONE 13(12): e0208073 (2018)

A Finite Presentation of CNOT-Dihedral Operators

M. Amy, J. Chen, N. J. Ross

Quantum Physics and Logic (QPL 2017)

On the CNOT complexity of CNOT–phase circuits

M. Amy, P. Azimzadeh, M. Mosca

Quantum Science and Technology 4 (1) (2018)

Towards Large-scale Functional Verification of Universal Quantum Circuits

M. Amy

Quantum Physics and Logic (QPL 2018)

Comparison of fault-tolerant thresholds for planar qudit geometries

Jacob Marks, Tomas J.-O'Connor and Vlad Gheorghiu

New Journal of Physics 19, 113022 (2017).

Parallelizing quantum circuit synthesis

O. Di Matteo, M. Mosca

Quantum Science and Technology 1 (1) (2016)




Version 2.0 - 24 August 2019

Quantum++ is a modern C++11 general purpose quantum computing library, composed solely of template header files. Quantum++ is written in standard C++11 and has very low external dependencies, using only the Eigen 3 linear algebra header-only template library and, if available, the OpenMP multi-processing library.

Quantum++ is not restricted to qubit systems or specific quantum information processing tasks, being capable of simulating arbitrary quantum processes. The main design factors taken in consideration were the ease of use, high portability, and high performance. The library's simulation capabilities are only restricted by the amount of available physical memory. On a typical machine (Intel i5 8Gb RAM) Quantum++ can successfully simulate the evolution of 25 qubits in a pure state or of 12 qubits in a mixed state reasonably fast.


Version 1.2.0 - 27 May 2016

pQCS, short for "parallel quantum circuit synthesis", is a tool which leverages parallel collision finding algorithms to exactly synthesize multi-qubit circuits with optimal T-count. The details of the algorithm can be found in Olivia Di Matteo's MSc thesis.

pQCS is written in C++11, and comes in two 'flavours'. The first uses OpenMP for parallelization (making it suitable for use on a multi-core personal computer), and the second uses Boost.MPI (for use on clusters). pQCS has been tested extensively on Linux and Mac OS X. New features are actively under development.


Feynman is a toolkit for quantum circuit analysis in the path integral model of quantum mechanics. The toolkit comprises synthesis, optimization and verification methods based around representations of circuit actions as sums-over-paths.

Feynman includes both a library for importing into other quantum circuit and compiler projects, and standalone tools for optimization and verification.


Exact and approximate synthesis of single qubit circuits using Clifford and T gate library.

Contact Us

a part of:
The Institute for Quantum Computing