コード例 #1
0
def run(simulator: cg.XmonSimulator, circuit: cirq.Circuit,
        scheduler: Optional[Callable], **kw):
    if scheduler is None:
        program = circuit
    else:
        program = scheduler(cirq.UnconstrainedDevice, circuit)
    return simulator.run(program, **kw)
コード例 #2
0
def run(simulator: cg.XmonSimulator,
        circuit: cirq.Circuit,
        scheduler: Optional[Callable],
        **kw):
    if scheduler is None:
        program = circuit
    else:
        program = scheduler(cirq.UnconstrainedDevice, circuit)
    return simulator.run(program, **kw)
コード例 #3
0
                yield XmonMeasurementGate(key='q0')(q[0])
                yield XmonMeasurementGate(key='q1')(q[1])
                yield XmonMeasurementGate(key='q2')(q[2])
                yield XmonMeasurementGate(key='q3')(q[3])

        circuit.append(circuit_init())

        print(" ")
        print(" ")
        print(circuit)
        print(" ")
        print(" ")

        simulator = XmonSimulator()

        result = simulator.run(circuit)

        measured = int(str(result)[3])

        print(str(result))
        print(str(result)[3])
        print(str(result)[8])
        print(str(result)[13])

        if ((str(result)[3] + str(result)[8] + str(result)[13] +
             str(result)[18]) == "0000"):
            graphing[0] = graphing[0] + 1
        if ((str(result)[3] + str(result)[8] + str(result)[13] +
             str(result)[18]) == "0001"):
            graphing[1] = graphing[1] + 1
        if ((str(result)[3] + str(result)[8] + str(result)[13] +
コード例 #4
0
def _run_sim_stage2(a,
                    b,
                    x,
                    z,
                    alpha,
                    exact=False,
                    print_circuit=False,
                    noisy=False):
    """Executes circuit a single time. Outputs 1 for a success (i.e. reference qubits are |000>)
    and 0 for a failure.

    Args:
    =====
    a, b, x, z : numeric
        Circuit parameters for encoding circuit
    alpha : numeric
        Parameter for state preparation circuit
    exact : bool
        If True, works with wavefunction
    print_circuit : bool
        If True, prints circuit
    noisy : bool
        If True, runs noisy version of circuit

    Returns:
    ========
    total : int
        Value of 1 if reference qubits are all 0's. Value of 0 else.
    """
    simulator = XmonSimulator()

    if noisy:
        circuit_run, resolvers = noisy_job(a, b, x, z, alpha, exact)
    else:
        circuit_run = compression_circuit(a, b, x, z, alpha, exact)

    if exact:
        if noisy:
            for resolver in resolvers:
                result = simulator.simulate(circuit=circuit_run,
                                            param_resolver=resolver)
        else:
            result = simulator.simulate(circuit=circuit_run)
        avg = 0
        for j in range(2):
            avg += np.abs(result.final_state[j])**2
        return avg

    else:
        if noisy:
            for resolver in resolvers:
                result = simulator.run(circuit=circuit_run,
                                       param_resolver=resolver,
                                       repetitions=1)
        else:
            result = simulator.run(circuit=circuit_run, repetitions=1)

    reference_measurements = []
    reference_labels = ['r00', 'r01', 'r10']
    for j in reference_labels:
        reference_measurements.append(int(result.measurements[j][0]))
    total = 0
    res = []
    for y in range(3):
        res.append(reference_measurements[y])
    if res == [0, 0, 0]:
        total = 1
    if print_circuit == True:
        print(circuit_run.to_text_diagram(use_unicode_characters=False))
    return total
コード例 #5
0
def apply_h():
    yield cirq.CCX.on(target[0], target[1], final)
    yield cirq.CCX.on(target[0], target[2], final)
    yield cirq.CCX.on(target[1], target[2], final)
    yield cirq.CNOT.on(target[0], final)
    yield cirq.CNOT.on(target[1], final)
    yield cirq.CNOT.on(target[2], final)
    #yield cirq.H.on(final)


circuit.append(apply_h())


def circuit_init_again(meas=True):
    if meas:
        yield XmonMeasurementGate(key='qubit')(final)


#circuit.append()
circuit.append(circuit_init_again())

print(" ")
print(" ")
print(circuit)
print(" ")
print(" ")

simulator = XmonSimulator()
result = simulator.run(circuit, repetitions=20)
print(result)