Fix multi-controlled gates in name mapping #2326
Open
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
MCSXGate
,MCYGate
,MCZGate
,MCRXGate
,MCRYGate
,MCRZGate
,MCU3Gate
,MCUGate
, andMCSwapGate
can not be instantiated due to a mismatch in the number of qubits with the base gate:Details and comments
I came across this issue while writing a unit test for Qiskit/qiskit#13952.
Commit doichanj@4587384 (pull #1995) changed the base gates of these gates from non-controlled gates into singly controlled gates, which means there is one qubit too much in the base gate.
An alternative solution would be to reduce
num_ctrl_qubits
by one when callingControlledGate.__init__()
, but then the multi-controlled gates can only be created for two or more control qubits and one would need to extract the last qubit from the control state to pass it to the base gate.