示例#1
0
        def sample_gate(a: cirq.Qid, b: cirq.Qid,
                        gate: cirq.FSimGate) -> PhasedFSimCharacterization:
            _assert_inv_sqrt_iswap_like(gate)

            if (a, b) in parameters:
                pair_parameters = parameters[(a, b)]
                if not isinstance(pair_parameters, PhasedFSimCharacterization):
                    pair_parameters = PhasedFSimCharacterization(
                        **pair_parameters)
            elif (b, a) in parameters:
                pair_parameters = parameters[(b, a)]
                if not isinstance(pair_parameters, PhasedFSimCharacterization):
                    pair_parameters = PhasedFSimCharacterization(
                        **pair_parameters)
                pair_parameters = pair_parameters.parameters_for_qubits_swapped(
                )
            elif ideal_when_missing_gate:
                pair_parameters = SQRT_ISWAP_INV_PARAMETERS
            else:
                raise ValueError(f'Missing parameters for pair {(a, b)}')

            if pair_parameters.any_none():
                if not ideal_when_missing_parameter:
                    raise ValueError(
                        f'Missing parameter value for pair {(a, b)}, '
                        f'parameters={pair_parameters}')
                pair_parameters = pair_parameters.merge_with(
                    SQRT_ISWAP_INV_PARAMETERS)

            return pair_parameters
示例#2
0
        def sample_gate(a: cirq.Qid, b: cirq.Qid,
                        gate: cirq.FSimGate) -> PhasedFSimCharacterization:
            assert isinstance(gate,
                              cirq.FSimGate), f'Expected FSimGate, got {gate}'
            assert np.isclose(gate.theta, np.pi / 4) and np.isclose(
                gate.phi, 0.0), f'Expected ISWAP ** -0.5 like gate, got {gate}'

            if (a, b) in parameters:
                pair_parameters = parameters[(a, b)]
                if not isinstance(pair_parameters, PhasedFSimCharacterization):
                    pair_parameters = PhasedFSimCharacterization(
                        **pair_parameters)
            elif (b, a) in parameters:
                pair_parameters = parameters[(b, a)]
                if not isinstance(pair_parameters, PhasedFSimCharacterization):
                    pair_parameters = PhasedFSimCharacterization(
                        **pair_parameters)
                pair_parameters = pair_parameters.parameters_for_qubits_swapped(
                )
            elif ideal_when_missing_gate:
                pair_parameters = SQRT_ISWAP_INV_PARAMETERS
            else:
                raise ValueError(f'Missing parameters for pair {(a, b)}')

            if pair_parameters.any_none():
                if not ideal_when_missing_parameter:
                    raise ValueError(
                        f'Missing parameter value for pair {(a, b)}, '
                        f'parameters={pair_parameters}')
                pair_parameters = pair_parameters.merge_with(
                    SQRT_ISWAP_INV_PARAMETERS)

            return pair_parameters
示例#3
0
def test_parameters_for_qubits_swapped():
    characterization = PhasedFSimCharacterization(theta=0.1,
                                                  zeta=0.2,
                                                  chi=0.3,
                                                  gamma=0.4,
                                                  phi=0.5)
    assert characterization.parameters_for_qubits_swapped(
    ) == PhasedFSimCharacterization(theta=0.1,
                                    zeta=-0.2,
                                    chi=-0.3,
                                    gamma=0.4,
                                    phi=0.5)
示例#4
0
        def sample_gate(
            a: cirq.Qid, b: cirq.Qid, gate: cirq.FSimGate
        ) -> PhasedFSimCharacterization:
            pair_parameters = None
            swapped = False
            if (a, b) in parameters:
                pair_parameters = parameters[(a, b)].get(gate)
            elif (b, a) in parameters:
                pair_parameters = parameters[(b, a)].get(gate)
                swapped = True

            if pair_parameters is None:
                raise ValueError(f'Missing parameters for value for pair {(a, b)} and gate {gate}.')
            if not isinstance(pair_parameters, PhasedFSimCharacterization):
                pair_parameters = PhasedFSimCharacterization(**pair_parameters)
            if swapped:
                pair_parameters = pair_parameters.parameters_for_qubits_swapped()

            return pair_parameters