Skip to content

Decomposition of multi-controlled unitary single-qubit gates #1843

@renatomello

Description

@renatomello

Currently, circuit transpilation into single- and two-qubit gates does not transpile multi-controlled single-qubit rotations. For instance,

from qibo import Circuit, gates

nqubits = 4
theta = 0.1

circuit = Circuit(nqubits)
circuit.add(gates.GIVENS(2, 3, theta).controlled_by(0, 1))
circuit.draw()
print()
decomposed = circuit.decompose()
decomposed.draw()

returns

0: ─o1: ─o2: ─G3: ─G0: ─────o──o──────
1: ─────o──o──────
2: ─HoRY|──oH3: ───X────RYX───

without transpiling the multi-controlled RY gates.

To transpile such gates, we would like to implement the techniques in Vale et al. (2023). More specifically, generic multi-controlled $\textrm{SU}(2)$ rotations should follow Lemma 1 and Theorem 1. Real-valued $\textrm{SU}(2)$ rotations should follow Lemma 2 and Theorem 2. Two-qubit gate complexities should respect the upper bounds stated in Theorems 3, 4, and 5.

The authors of the paper have their own open-source implementation in https://github.com/qclib/qclib, which could serve as inspiration for the independent implementation here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No fields configured for Feature.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions