Decomposes n-qubit unitary into CX/YPow/ZPow/CNOT gates, preserving global phase.
cirq.quantum_shannon_decomposition(
qubits: 'List[cirq.Qid]', u: np.ndarray
) -> 'op_tree.OpTree'
The algorithm is described in Shende et al.:
Synthesis of Quantum Logic Circuits. Tech. rep. 2006,
https://arxiv.org/abs/quant-ph/0406176
Args |
qubits
|
List of qubits in order of significance
|
u
|
Numpy array for unitary matrix representing gate to be decomposed
|
Calls |
(Base Case)
- _single_qubit_decomposition
OR
(Recursive Case)
- _msb_demuxer
- _multiplexed_cossin
- _msb_demuxer
|
Yields |
A single 2-qubit or 1-qubit operations from OP TREE
composed from the set
{ CNOT, rz, ry, ZPowGate }
|
Raises |
ValueError
|
If the u matrix is non-unitary
|
ValueError
|
If the u matrix is not of shape (2^n,2^n)
|