Skip to content

Organize the synthesis library of multi-controlled gates  #12863

@ShellyGarion

Description

@ShellyGarion

What should we add?

Currently the synthesis methods of the multi-controlled gates are part of their definition.
We would like to have a single MCXGate() class, and an HLS plugin that checks the number of clean or dirty ancillas, and chooses the optimal synthesis method (see #12729).

The synthesis library will therefore include a new section Multi-controlled gates synthesis which will include the following functions:

  • synth_mcx_no_ancillas - the current definition of the MCXGate
  • synth_mcx_one_clean_ancilla - the current definition of the MCXRecursiveGate
  • synth_mcx_n_dirty_ancillas - the current definition of the MCVChainGate
  • synth_mcx_graysynth_no_ancillas - the current definition of the MCXGrayCode (and the internal MCU1Gate). Note that the number of CX gates grows exponentially in the number of qubits.
  • synth_mcp_no_ancillas - the current definition if the MCPhaseGate
  • synth_mcp_graysynth_no_ancillas - the current definition of the MCXGrayCode (and the internal MCU1Gate). Only for parametrized gates. Note that the number of CX gates grows exponentially in the number of qubits.
  • synth_mcmt_no_ancillas - the current definition of the MCMTGate
  • synth_mcmt_n_clean_ancillas - the current definition of the MCMTVChainGate
  • synth_mcrx_no_ancillas - the current synthesis of the mcrx method
  • synth_mcry_no_ancillas - the current synthesis of the mcrx method
  • synth_mcrz_no_ancillas - the current synthesis of the mcrz method

The following classes will be deprecated in Qiskit 2.0:

The following classes will remain in the circuit library (including synthesis methods with ancillas when applicable):

Question:
Should we add the gates MCRX, MCRY and MCRZ to the circuit library?
See the discussion in #12048

### Tasks
- [ ] https://github.com/Qiskit/qiskit/pull/12904
- [ ] https://github.com/Qiskit/qiskit/pull/12961
- [ ] https://github.com/Qiskit/qiskit/pull/13150
- [ ] #13507

Metadata

Metadata

Labels

mod: circuitRelated to the core of the `QuantumCircuit` class or the circuit librarysynthesistype: feature requestNew feature or request

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions