def test_num_two_qubit_gates_required(): for i in range(4): assert (cirq.num_cnots_required( cirq.testing.random_two_qubit_circuit_with_czs(i).unitary(), atol=1e-6) == i) assert cirq.num_cnots_required(np.eye(4)) == 0
def test_extract_right_diag(U): assert cirq.num_cnots_required(U) == 3 diag = cirq.linalg.extract_right_diag(U) assert cirq.is_diagonal(diag) assert cirq.num_cnots_required(U @ diag) == 2
def test_num_two_qubit_gates_required_invalid(): with pytest.raises(ValueError, match="(4,4)"): cirq.num_cnots_required(np.array([[1]]))
def test_num_two_qubit_gates_required(): for i in range(4): assert cirq.num_cnots_required( _two_qubit_circuit_with_cnots(i).unitary()) == i assert cirq.num_cnots_required(np.eye(4)) == 0