Skip to content
Open
Show file tree
Hide file tree
Changes from 48 commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
2134c2e
Add multi-control functionality
Dec 8, 2025
0ae2b61
Merge branch 'main' into multi_control
keefehuang Dec 8, 2025
f8c4503
Apply minor updates to code
Dec 8, 2025
894add1
Remove old CCX test
Dec 8, 2025
fb32afb
Add tests for CCZ, CRZ, MCRZ and MCZ
Dec 8, 2025
2375b74
Rename control and target for addCrz
Dec 8, 2025
275e832
🎨 pre-commit fixes
pre-commit-ci[bot] Dec 8, 2025
c873318
:sparkles: Qiskit to IQM JSON converter
marcelwa Dec 7, 2025
068560c
:white_check_mark: Test Qiskit to IQM JSON converter
marcelwa Dec 7, 2025
53032bb
:sparkles: Support IQM JSON conversion in `QDMIBackend`
marcelwa Dec 7, 2025
5c68a2f
:white_check_mark: Tests for new backend functionality
marcelwa Dec 7, 2025
3f46cd3
:art: Apply suggestions from GitHub Copilot
marcelwa Dec 7, 2025
33b48a7
:art: Apply `pre-commit`
marcelwa Dec 7, 2025
453e00a
:memo: Add to CHANGELOG
marcelwa Dec 7, 2025
b81e3e3
:memo: Adjust documentation
marcelwa Dec 7, 2025
2505f27
:pencil2: Fix typo
marcelwa Dec 7, 2025
9ab82f3
:adhesive_bandage: Fix usage of `R` gate in docstring
marcelwa Dec 7, 2025
06a40af
:art: Apply CodeRabbit's suggestion
marcelwa Dec 7, 2025
92ed957
:art: Apply CodeRabbit's suggestion
marcelwa Dec 8, 2025
0911f7c
:white_check_mark: Add tests to cover CodeRabbit's suggestions
marcelwa Dec 8, 2025
3d74d1b
🎨 pre-commit fixes
pre-commit-ci[bot] Dec 9, 2025
9915b6a
Merge branch 'main' into multi_control
keefehuang Dec 9, 2025
cdc0ec3
Merge branch 'main' into multi_control
keefehuang Dec 15, 2025
ee9b279
Rename variables in function definition of addCrz to remove linting w…
Dec 15, 2025
cbda9d6
Remove unreachable branches in switch case in addMcrz
Dec 15, 2025
a8af5a7
Remove unreachable branches in switch cases for
Dec 15, 2025
8236fbf
Use addMcz implementation
Dec 15, 2025
14e1955
Add tests to increase codecov
Dec 15, 2025
9de9ac9
Add more connection assertions for tests
Dec 15, 2025
826829e
Remove one check in buildFunctionality as we only care if there is on…
Dec 15, 2025
93bf49d
Add additional checks per coderabbit suggestions
Jan 8, 2026
48caa99
Merge branch 'main' into multi_control
keefehuang Jan 8, 2026
8cbe448
Fix connectivity in test
Jan 8, 2026
e10767e
Add tests for connectivity of additional wires to meet coderabbit req…
Jan 8, 2026
9816218
Add connectivity test for qubit 1
Jan 8, 2026
ef2f343
Merge branch 'main' into multi_control
keefehuang Jan 8, 2026
77dae77
Removed unneeded import
Jan 8, 2026
6460a92
Apply suggestion from @burgholzer
keefehuang Jan 26, 2026
4af8da7
Remove unneeded import, remove repeated test
Feb 5, 2026
63f2325
Extract checkEquivalence as separate function
Feb 5, 2026
eed43bf
Remove unreachable code
Feb 5, 2026
bf5e23e
Add set_difference implementation
Feb 5, 2026
3f1fa28
Inline vector
Feb 5, 2026
340bad9
Reserve and switch to emplace_back
Feb 5, 2026
4780212
🎨 pre-commit fixes
pre-commit-ci[bot] Feb 5, 2026
ff77fa4
Run clang-format
Feb 5, 2026
297078e
Implement Crx, Mcrz, Mcrzz, Mcrzx, Mcrxx, Mcswap
Feb 5, 2026
9ab3177
🎨 pre-commit fixes
pre-commit-ci[bot] Feb 5, 2026
553ab8f
Update checkEquivalance, tests, Mcrzz implementation
Feb 19, 2026
67b8fc2
🎨 pre-commit fixes
pre-commit-ci[bot] Feb 19, 2026
440ff42
Extend test coverage
Feb 19, 2026
e82defd
🎨 pre-commit fixes
pre-commit-ci[bot] Feb 19, 2026
1f224ce
Apply coderabbit suggestions
Feb 19, 2026
18a8aa1
Update per clang-tidy
Feb 19, 2026
c4c524c
Remove static from checkEquivalence
Feb 19, 2026
4a51d10
Merge branch 'main' into multi_control
keefehuang Feb 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions include/mqt-core/zx/FunctionalityConstruction.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,14 @@ class FunctionalityConstruction {
EdgeType type = EdgeType::Simple);
static void addCphase(ZXDiagram& diag, const PiExpression& phase, Qubit ctrl,
Qubit target, std::vector<Vertex>& qubits);
static void addMcphase(ZXDiagram& diag, const PiExpression& phase,
const std::vector<Qubit>& controls, Qubit target,
std::vector<Vertex>& qubits);
static void addSwap(ZXDiagram& diag, Qubit target, Qubit target2,
std::vector<Vertex>& qubits);
static void addMcswap(ZXDiagram& diag, const std::vector<Qubit>& controls,
Qubit target, Qubit target2,
std::vector<Vertex>& qubits);
static void
addRzz(ZXDiagram& diag, const PiExpression& phase, Qubit target,
Qubit target2, std::vector<Vertex>& qubits,
Expand All @@ -99,6 +105,11 @@ class FunctionalityConstruction {
addRzx(ZXDiagram& diag, const PiExpression& phase, Qubit target,
Qubit target2, std::vector<Vertex>& qubits,
const std::optional<double>& unconvertedPhase = std::nullopt);
static void
addMcrzz(ZXDiagram& diag, const PiExpression& phase,
const std::vector<Qubit>& controls, const Qubit target,
const Qubit target2, std::vector<Vertex>& qubits,
const std::optional<double>& unconvertedPhase = std::nullopt);
static void addDcx(ZXDiagram& diag, Qubit qubit1, Qubit qubit2,
std::vector<Vertex>& qubits);
static void
Expand All @@ -113,6 +124,24 @@ class FunctionalityConstruction {
const std::optional<double>& unconvertedBeta = std::nullopt);
static void addCcx(ZXDiagram& diag, Qubit ctrl0, Qubit ctrl1, Qubit target,
std::vector<Vertex>& qubits);
static void addCcz(ZXDiagram& diag, Qubit ctrl0, Qubit ctrl1, Qubit target,
std::vector<Vertex>& qubits);
static void addCrx(ZXDiagram& diag, const PiExpression& phase,
const Qubit control, const Qubit target,
std::vector<Vertex>& qubits);
static void addMcrx(ZXDiagram& diag, const PiExpression& phase,
std::vector<Qubit> controls, const Qubit target,
std::vector<Vertex>& qubits);
static void addCrz(ZXDiagram& diag, const PiExpression& phase,
const Qubit control, const Qubit target,
std::vector<Vertex>& qubits);
static void addMcrz(ZXDiagram& diag, const PiExpression& phase,
std::vector<Qubit> controls, const Qubit target,
std::vector<Vertex>& qubits);
static void addMcx(ZXDiagram& diag, std::vector<Qubit> controls,
const Qubit target, std::vector<Vertex>& qubits);
static void addMcz(ZXDiagram& diag, std::vector<Qubit> controls,
const Qubit target, std::vector<Vertex>& qubits);
static op_it parseOp(ZXDiagram& diag, op_it it, op_it end,
std::vector<Vertex>& qubits, const qc::Permutation& p);
static op_it parseCompoundOp(ZXDiagram& diag, op_it it, op_it end,
Expand Down
Loading
Loading