Skip to main contentIBM Quantum Documentation

XXDecomposer

class qiskit.synthesis.XXDecomposer(basis_fidelity=1.0, euler_basis='U', embodiments=None, backup_optimizer=None)

GitHub

Bases: object

A class for optimal decomposition of 2-qubit unitaries into 2-qubit basis gates of XX type (i.e., each locally equivalent to CAN(α,0,0)CAN(\alpha, 0, 0) for a possibly varying alphaalpha).

Parameters

  • basis_fidelity (dict |float) – available strengths and fidelity of each. Can be either (1) a dictionary mapping XX angle values to fidelity at that angle; or (2) a single float f, interpreted as {pi: f, pi/2: f/2, pi/3: f/3}.
  • euler_basis (str) – Basis string provided to OneQubitEulerDecomposer for 1Q synthesis. Defaults to "U".
  • embodiments (dict[float, QuantumCircuit] | None) – A dictionary mapping interaction strengths alpha to native circuits which embody the gate CAN(α,0,0)CAN(\alpha, 0, 0). Strengths are taken so that π/2\pi/2 represents the class of a full CXGate.
  • backup_optimizer (Callable[..., QuantumCircuit] | None) – If supplied, defers synthesis to this callable when XXDecomposer has no efficient decomposition of its own. Useful for special cases involving 2 or 3 applications of XX(π/2)XX(\pi/2), in which case standard synthesis methods provide lower 1Q gate count.
Note

If embodiments is not passed, or if an entry is missing, it will be populated as needed using the method _default_embodiment.

__call__

__call__(unitary, basis_fidelity=None, approximate=True, use_dag=False)

GitHub

Fashions a circuit which (perhaps approximately) models the special unitary operation unitary, using the circuit templates supplied at initialization as embodiments. The routine uses basis_fidelity to select the optimal circuit template, including when performing exact synthesis; the contents of basis_fidelity is a dictionary mapping interaction strengths (scaled so that CX=RZX(π/2)CX = RZX(\pi/2) corresponds to π/2\pi/2) to circuit fidelities.

Parameters

  • unitary (Operator or ndarray) – 4×44 \times 4 unitary to synthesize.
  • basis_fidelity (dict orfloat) – Fidelity of basis gates. Can be either (1) a dictionary mapping XX angle values to fidelity at that angle; or (2) a single float f, interpreted as {pi: f, pi/2: f/2, pi/3: f/3}. If given, overrides the basis_fidelity given at init.
  • approximate (bool) – Approximates if basis fidelities are less than 1.0 .
  • use_dag (bool) – If true a DAGCircuit is returned instead of a QuantumCircuit when this class is called.

Returns

Synthesized circuit.

Return type

QuantumCircuit


Methods

num_basis_gates

num_basis_gates(unitary)

GitHub

Counts the number of gates that would be emitted during re-synthesis.

Note

This method is used by ConsolidateBlocks.

Parameters

unitary (Operator | np.ndarray) –

Was this page helpful?
Report a bug or request content on GitHub.