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
def test_tensor_product_value_error(): Observable.TensorProduct([Observable.Z(), Observable.I(), Observable.X()]) @ "a"
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)
def test_tensor_product_eigenvalue_index_out_of_bounds(): obs = Observable.TensorProduct([Observable.Z(), Observable.I(), Observable.X()]) obs.eigenvalue(8)
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(