Output specified classical register names to QASM3 #134
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
When outputting quantum circuits in QASM3, the names of classical registers specified during circuit construction are preserved in the output.
Details and comments
We can specify a register name to add a quantum or classical register to a circuit like this:
In the current Qiskit C++ implementation, multiple registers are combined into a single large register and their indices are adjusted, similar to the internal representation of the Qiskit C API. For example, the circuit above is output as follows:
As a result, users have to determine which register corresponds to which index from the output, but this is obviously not intuitive. This PR resolves that issue, ensuring the QASM3 representation respects the classical register names specified by the user. For example, the circuit above will now be output as follows:
Note that quantum registers are combined because the indices of qubits will be mapped to physical indices by a transpiler.