Skip to content

Commit 719b5b2

Browse files
committed
Support parameterized QASM3 export
1 parent 1c8e1ca commit 719b5b2

5 files changed

Lines changed: 1177 additions & 374 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
---
2+
features:
3+
- |
4+
`QuantumCircuit::to_qasm3()` now uses a dedicated OpenQASM 3 exporter and
5+
declares symbolic circuit parameters as OpenQASM 3 `input float[64]`
6+
values before emitting parameterized gate operations. Generated input and
7+
register names are adjusted when needed to avoid OpenQASM 3 global symbol
8+
conflicts, including conflicts with custom gate definitions emitted by the
9+
exporter. The exporter also emits valid OpenQASM 3 for controlled-U1,
10+
controlled-U3, and global phase operations.
11+
- |
12+
Added `QuantumCircuit::parameter_symbols()`, which returns the sorted list
13+
of unique parameter symbol names used in the circuit. The OpenQASM 3
14+
exporter consumes this list instead of collecting parameters on its own.
15+
This is currently a stub: the authoritative parameter table lives on the
16+
Rust side and there is no C-API yet to enumerate the symbols (only
17+
`qk_circuit_num_param_symbols`, the count), so the names are derived from
18+
the parameter expressions and the implementation is expected to be replaced
19+
by a C-API when one becomes available. Until then, parameter names must be
20+
recoverable as OpenQASM identifier tokens; the stub raises an exception if
21+
the harvested names do not match the Rust-side parameter count.
22+
issues:
23+
- |
24+
`QuantumCircuit::parameter_symbols()` (and therefore the OpenQASM 3
25+
exporter) identifies parameters by their original symbol name. Distinct
26+
`Parameter` objects that share a name are treated as a single symbol,
27+
because qiskit-cpp cannot yet disambiguate parameters by UUID through the
28+
C-API. The Qiskit C-API reports same-name distinct symbols
29+
with `QkExitCode_ParameterNameConflict`.

0 commit comments

Comments
 (0)