Ejemplo n.º 1
0
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
Ejemplo n.º 2
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
Ejemplo n.º 3
0
def test_num_two_qubit_gates_required_invalid():
    with pytest.raises(ValueError, match="(4,4)"):
        cirq.num_cnots_required(np.array([[1]]))
Ejemplo n.º 4
0
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