Theoretical research, experiments and implementation of abstract additive quantum decision diagrams, as part of a student research project.
To build the project, you must have Clang, CMake and Ninja installed. The code uses some C++23 features, so a recent version of clang++ is required. Other versions probably work, but I personally use the following on my machine:
- Clang 19.1.7
- CMake 3.31.6
- Ninja 1.12.1
- Configure the project
export CXX=$(which clang++)
cmake -S . -B build -GNinja- Build the project
cmake --build build- To run the tests (optional)
cd build
ctestAfter building the project (steps 1. and 2. above), simply run ./build/prompt. You can then enter QASM instructions, for example
qubit a;
qubit b;
h a;
p(pi/3) b;
cx a b;
h b;
This prompt utility comes with a few available run statements that should be ;-terminated:
@build,@inst,@instantiate- create a new diagram@list,@actions- list the actions (gate applicaitons) to be performed@display,@evaluate,@eval- display the evaluation of the current diagram@describe,@desc- display the description of the current diagram@help,@man,@manual- display a help message
Applying gates to qubits is not performed immediately after the statement is entered, and should be triggered by a @display;.
The prompt executable can also take a .qasm file path as an argument, in this case it quits after executing all statements in the file, without entering interactive mode.
Presentation of this repository's main directories:
.github/workflowsGitHub actions continuous integration (CI) and continous deployment (CD) configuration files- Runs the unit tests that are in the
testdirectory and marked as ready for testing inCMakeLists.txt - Generate the docs using Doxygen and publish them to maloleroy.github.io/coto using GitHub Pages
- Runs the unit tests that are in the
archivesLegacy documents or code, that still should be indexeddocTheory documents (basically, LaTeX)includeCode header files (.hC++ files)refReferences, code or case studies that can be used as exampless6Final report and presentation for semester 6 (in French)s7Final report and presentation for semester 6 (in French)srcSource code (.cppC++ files, not headers)testTest code (.cppC++ files)