View source on GitHub |
Implements action of multi-controlled unitary gate.
cirq.decompose_multi_controlled_rotation(
matrix: np.ndarray, controls: List['cirq.Qid'], target: 'cirq.Qid'
) -> List['cirq.Operation']
Returns a sequence of operations, which is equivalent to applying
single-qubit gate with matrix matrix
on target
, controlled by
controls
.
Result is guaranteed to consist exclusively of 1-qubit, CNOT and CCNOT gates.
If matrix is special unitary, result has length O(len(controls))
.
Otherwise result has length O(len(controls)**2)
.
References | |
---|---|
[1] Barenco, Bennett et al. Elementary gates for quantum computation. 1995. https://arxiv.org/pdf/quant-ph/9503016.pdf |
Args | |
---|---|
matrix - 2x2 numpy unitary matrix (of real or complex dtype). controls - control qubits. targets - target qubits. |
Returns | |
---|---|
A list of operations which, applied in a sequence, are equivalent to
applying MatrixGate(matrix).on(target).controlled_by(*controls) .
|