angel is a modern Quantm State Preparation (QSP) library implemented in C++-17. As it is modular and header-only, it can be easily integrated with other tools and often outperforms implementation developed in high-level programming languages such as Python.

The angel library implements algorithms for QSP with the purpose of synthesizing an optimized quantum circuit to prepare a given quantum state. As an objective function, the algorithms focus on minimizing the quantum circuit’s depth and the number of elementary quantum gates. In particular, the algorithms reduce the number of controlled-NOT (CNOT) gates, which are in many experimental NISQ architectures relatively expensive when compared to other elementary quantum gates. Finding the optimum quantum circuit with the minimum number of elementary gates, however, is in practice for arbitrary quantum states intractable. The angel library provides several different heuristics, which allow its users to trade-off runtime for quality. A good quantum circuit realization can be obtained fast and, if a user is willing to invest more runtime, the proposed algorithms are often capable to achieve substantial gate reductions. In combination with the tweedledum, a C++-17 header-only library for quantum circuit synthesis, angel can generate quantum circuits in standard quantum circuit formats, such as Quantum Assembly (QASM) or Quantum Instruction Language (QUIL).

At the present state, the angel library implements mainly algorithms for preparing uniform quantum states, a special class of quantum states that can be represented with Boolean functions.