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

Picture of Matthew Amy

Matthew Amy

PhD Student

University of Waterloo

Vlad Gheorghiu

Postdoctoral Researcher

Picture of Mária Kieferová

Mária Kieferová

PhD Student

Picture of Alex Parent

Alex Parent

MSc Student

Picture of Vincent Russo

Vincent Russo

PhD Student

Picture of Twesh Upadhyaya

Twesh Upadhyaya

Undergraduate student

University of Toronto


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)

Technology mapping of reversible circuits to Clifford+T quantum circuits

N. Abdessaied, M. Amy, M. Soeken, R. Drechsler

Estimating the cost of generic quantum pre-image attacks on SHA-2 and SHA-3

M. Amy, O. Di Matteo, V. Gheorghiu, M. Mosca, A. Parent, J. Schanck

Complexity of reversible circuits and their quantum implementations

N. Abdessaied, M. Amy, R. Drechsler, M. Soeken

Verified compilation of space-efficient reversible circuits

M. Amy, M. Roetteler, K. Svore




Version 1.2 - 10 February 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.

Contact Us

a part of:
The Institute for Quantum Computing