Decomposes a 2-qubit unitary to a diagonal and the remaining operations.
cirq.optimizers.two_qubit_matrix_to_diagonal_and_operations(
q0: "cirq.Qid",
q1: "cirq.Qid",
mat: np.ndarray,
allow_partial_czs: bool = False,
atol: float = 1e-08,
clean_operations: bool = True
) -> Tuple[np.ndarray, List['cirq.Operation']]
For a 2-qubit unitary V, return ops, a list of operations and
D diagonal unitary, so that:
V = cirq.Circuit(ops) @ D
Args |
q0
|
The first qubit being operated on.
|
q1
|
The other qubit being operated on.
|
mat
|
the input unitary
|
allow_partial_czs
|
Enables the use of Partial-CZ gates.
|
atol
|
A limit on the amount of absolute error introduced by the
construction.
|
clean_operations
|
Enables optimizing resulting operation list by
merging operations and ejecting phased Paulis and Z operations.
|
Returns |
tuple(ops,D): operations ops , and the diagonal D
|