def test_equality_statevector(): result1 = ResultType.StateVector() result2 = ResultType.StateVector() result3 = ResultType.Probability([1]) result4 = "hi" assert result1 == result2 assert result1 != result3 assert result1 != result4
def result_types_zero_shots_bell_pair_testing(device: Device, include_state_vector: bool, run_kwargs: Dict[str, Any]): circuit = (Circuit().h(0).cnot( 0, 1).expectation(observable=Observable.H() @ Observable.X(), target=[0, 1]).amplitude(["01", "10", "00", "11"])) if include_state_vector: circuit.state_vector() result = device.run(circuit, **run_kwargs).result() assert len(result.result_types) == 3 if include_state_vector else 2 assert np.allclose( result.get_value_by_result_type( ResultType.Expectation(observable=Observable.H() @ Observable.X(), target=[0, 1])), 1 / np.sqrt(2), ) if include_state_vector: assert np.allclose( result.get_value_by_result_type(ResultType.StateVector()), np.array([1, 0, 0, 1]) / np.sqrt(2), ) assert result.get_value_by_result_type( ResultType.Amplitude(["01", "10", "00", "11"])) == { "01": 0j, "10": 0j, "00": (1 / np.sqrt(2)), "11": (1 / np.sqrt(2)), }
def result_types_zero_shots_bell_pair_testing( device: Device, include_state_vector: bool, run_kwargs: Dict[str, Any], include_amplitude: bool = True, ): circuit = (Circuit().h(0).cnot(0, 1).expectation( observable=Observable.H() @ Observable.X(), target=[0, 1])) if include_amplitude: circuit.amplitude(["01", "10", "00", "11"]) if include_state_vector: circuit.state_vector() tasks = (circuit, circuit.to_ir(ir_type=IRType.OPENQASM)) for task in tasks: result = device.run(task, **run_kwargs).result() assert len(result.result_types) == 3 if include_state_vector else 2 assert np.allclose( result.get_value_by_result_type( ResultType.Expectation( observable=Observable.H() @ Observable.X(), target=[0, 1])), 1 / np.sqrt(2), ) if include_state_vector: assert np.allclose( result.get_value_by_result_type(ResultType.StateVector()), np.array([1, 0, 0, 1]) / np.sqrt(2), ) if include_amplitude: amplitude = result.get_value_by_result_type( ResultType.Amplitude(["01", "10", "00", "11"])) assert np.isclose(amplitude["01"], 0) assert np.isclose(amplitude["10"], 0) assert np.isclose(amplitude["00"], 1 / np.sqrt(2)) assert np.isclose(amplitude["11"], 1 / np.sqrt(2))
def test_add_result_type_observable_no_conflict_state_vector_obs_return_value( ): expected = [ ResultType.StateVector(), ResultType.Expectation(observable=Observable.Y()), ] circ = Circuit(expected) assert circ.result_types == expected
def test_equality_densitymatrix(): result1 = ResultType.DensityMatrix() result2 = ResultType.DensityMatrix() result3 = ResultType.StateVector() result4 = "foo" assert result1 == result2 assert result1 != result3 assert result1 != result4
def test_get_value_by_result_type(result_obj_4): result = GateModelQuantumTaskResult.from_object(result_obj_4) assert np.allclose( result.get_value_by_result_type(ResultType.Probability(target=0)), result.values[0] ) assert np.allclose(result.get_value_by_result_type(ResultType.StateVector()), result.values[1]) assert ( result.get_value_by_result_type(ResultType.Expectation(observable=Observable.Y(), target=0)) == result.values[2] ) assert ( result.get_value_by_result_type(ResultType.Variance(observable=Observable.Y(), target=0)) == result.values[3] ) assert result.get_value_by_result_type(ResultType.Amplitude(state=["00"])) == result.values[4]
def test_add_result_type_already_exists(): expected = [ResultType.StateVector()] circ = Circuit(expected).add_result_type(expected[0]) assert list(circ.result_types) == expected
def test_copy_with_mapping_target(sv): target_mapping = {0: 10, 1: 11} expected = ResultType.StateVector() assert sv.copy(target_mapping=target_mapping) == expected
def sv(): return ResultType.StateVector()
def test_copy_with_target(sv): target = [10, 11] expected = ResultType.StateVector() assert sv.copy(target=target) == expected
"result_type, serialization_properties, expected_ir", [ ( ResultType.Expectation(Observable.I(), target=0), OpenQASMSerializationProperties( qubit_reference_type=QubitReferenceType.VIRTUAL), "#pragma braket result expectation i(q[0])", ), ( ResultType.Expectation(Observable.I()), OpenQASMSerializationProperties( qubit_reference_type=QubitReferenceType.VIRTUAL), "#pragma braket result expectation i all", ), ( ResultType.StateVector(), OpenQASMSerializationProperties( qubit_reference_type=QubitReferenceType.VIRTUAL), "#pragma braket result state_vector", ), ( ResultType.DensityMatrix(), OpenQASMSerializationProperties( qubit_reference_type=QubitReferenceType.VIRTUAL), "#pragma braket result density_matrix", ), ( ResultType.DensityMatrix([0, 2]), OpenQASMSerializationProperties( qubit_reference_type=QubitReferenceType.VIRTUAL), "#pragma braket result density_matrix q[0], q[2]",
def test_add_result_type_already_exists(): expected = [ResultType.StateVector()] circ = Circuit(expected).add_result_type(expected[0]) assert circ.observables_simultaneously_measurable assert list(circ.result_types) == expected
(Circuit().x(0), gates.X().to_matrix()), (Circuit().y(0), gates.Y().to_matrix()), (Circuit().z(0), gates.Z().to_matrix()), (Circuit().s(0), gates.S().to_matrix()), (Circuit().si(0), gates.Si().to_matrix()), (Circuit().t(0), gates.T().to_matrix()), (Circuit().ti(0), gates.Ti().to_matrix()), (Circuit().v(0), gates.V().to_matrix()), (Circuit().vi(0), gates.Vi().to_matrix()), (Circuit().rx(0, 0.15), gates.Rx(0.15).to_matrix()), (Circuit().ry(0, 0.15), gates.Ry(0.15).to_matrix()), (Circuit().rz(0, 0.15), gates.Rz(0.15).to_matrix()), (Circuit().phaseshift(0, 0.15), gates.PhaseShift(0.15).to_matrix()), (Circuit().cnot(1, 0), gates.CNot().to_matrix()), (Circuit().cnot(1, 0).add_result_type( ResultType.StateVector()), gates.CNot().to_matrix()), (Circuit().swap(1, 0), gates.Swap().to_matrix()), (Circuit().swap(0, 1), gates.Swap().to_matrix()), (Circuit().iswap(1, 0), gates.ISwap().to_matrix()), (Circuit().iswap(0, 1), gates.ISwap().to_matrix()), (Circuit().pswap(1, 0, 0.15), gates.PSwap(0.15).to_matrix()), (Circuit().pswap(0, 1, 0.15), gates.PSwap(0.15).to_matrix()), (Circuit().xy(1, 0, 0.15), gates.XY(0.15).to_matrix()), (Circuit().xy(0, 1, 0.15), gates.XY(0.15).to_matrix()), (Circuit().cphaseshift(1, 0, 0.15), gates.CPhaseShift(0.15).to_matrix()), (Circuit().cphaseshift00(1, 0, 0.15), gates.CPhaseShift00(0.15).to_matrix()), (Circuit().cphaseshift01(1, 0, 0.15), gates.CPhaseShift01(0.15).to_matrix()), (Circuit().cphaseshift10(1, 0,