Exemplo n.º 1
0
def test_observable_from_ir_tensor_product():
    expected_observable = Observable.TensorProduct([Observable.Z(), Observable.I(), Observable.X()])
    actual_observable = observable_from_ir(["z", "i", "x"])
    assert expected_observable == actual_observable
Exemplo n.º 2
0
def test_tensor_product_value_error():
    Observable.TensorProduct([Observable.Z(), Observable.I(), Observable.X()]) @ "a"
Exemplo n.º 3
0
def test_tensor_product_to_ir():
    t = Observable.TensorProduct([Observable.Z(), Observable.I(), Observable.X()])
    assert t.to_ir() == ["z", "i", "x"]
    assert t.qubit_count == 3
    assert t.ascii_symbols == tuple(["Z@I@X"] * 3)
Exemplo n.º 4
0
def test_tensor_product_eigenvalue_index_out_of_bounds():
    obs = Observable.TensorProduct([Observable.Z(), Observable.I(), Observable.X()])
    obs.eigenvalue(8)
Exemplo n.º 5
0
    IRType,
    OpenQASMSerializationProperties,
    QubitReferenceType,
)

testdata = [
    (Observable.I(), Gate.I(), ["i"], (), np.array([1, 1])),
    (Observable.X(), Gate.X(), ["x"], tuple([Gate.H()]), get_pauli_eigenvalues(1)),
    (
        Observable.Y(),
        Gate.Y(),
        ["y"],
        tuple([Gate.Z(), Gate.S(), Gate.H()]),
        get_pauli_eigenvalues(1),
    ),
    (Observable.Z(), Gate.Z(), ["z"], (), get_pauli_eigenvalues(1)),
    (Observable.H(), Gate.H(), ["h"], tuple([Gate.Ry(-math.pi / 4)]), get_pauli_eigenvalues(1)),
]

invalid_hermitian_matrices = [
    (np.array([[1]])),
    (np.array([1])),
    (np.array([0, 1, 2])),
    (np.array([[0, 1], [1, 2], [3, 4]])),
    (np.array([[0, 1, 2], [2, 3]], dtype=object)),
    (np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]])),
    (Gate.T().to_matrix()),
]


@pytest.mark.parametrize(