Exemplo n.º 1
0
def test_xmon_device_eq():
    eq = cirq.testing.EqualsTester()
    eq.make_equality_group(lambda: square_device(3, 3))
    eq.make_equality_group(
        lambda: square_device(3, 3, holes=[cirq.GridQubit(1, 1)]))
    eq.make_equality_group(lambda: cg.XmonDevice(cirq.Duration(
        nanos=1), cirq.Duration(nanos=2), cirq.Duration(nanos=3), []))
    eq.make_equality_group(lambda: cg.XmonDevice(cirq.Duration(
        nanos=1), cirq.Duration(nanos=1), cirq.Duration(nanos=1), []))
Exemplo n.º 2
0
def test_init_timedelta():
    from datetime import timedelta

    timedelta_duration = timedelta(microseconds=1)
    d = cg.XmonDevice(
        measurement_duration=timedelta_duration,
        exp_w_duration=2 * timedelta_duration,
        exp_11_duration=3 * timedelta_duration,
        qubits=[
            cirq.GridQubit(row, col) for col in range(2) for row in range(2)
        ],
    )
    microsecond = cirq.Duration(nanos=1000)
    q00 = cirq.GridQubit(0, 0)
    q01 = cirq.GridQubit(0, 1)
    q10 = cirq.GridQubit(1, 0)
    q11 = cirq.GridQubit(1, 1)

    assert d.qubits == {q00, q01, q10, q11}

    assert d.duration_of(cirq.Z(q00)) == 0 * microsecond
    assert d.duration_of(cirq.measure(q00)) == microsecond
    assert d.duration_of(cirq.measure(q00, q01)) == microsecond
    assert d.duration_of(cirq.X(q00)) == 2 * microsecond
    assert d.duration_of(cirq.CZ(q00, q01)) == 3 * microsecond
Exemplo n.º 3
0
def square_device(width: int, height: int, holes=()) -> cg.XmonDevice:
    ns = cirq.Duration(nanos=1)
    return cg.XmonDevice(
        measurement_duration=ns,
        exp_w_duration=2 * ns,
        exp_11_duration=3 * ns,
        qubits=[
            cirq.GridQubit(row, col) for col in range(width)
            for row in range(height) if cirq.GridQubit(col, row) not in holes
        ],
    )
Exemplo n.º 4
0
def test_anneal_method_calls_anneal_search():
    q00 = cirq.GridQubit(0, 0)
    q01 = cirq.GridQubit(0, 1)
    q03 = cirq.GridQubit(0, 3)
    device = cg.XmonDevice(cirq.Duration(),
                           cirq.Duration(),
                           cirq.Duration(),
                           qubits=[q00, q01, q03])
    length = 2
    method = cg.AnnealSequenceSearchStrategy()

    with mock.patch.object(method, 'place_line') as place_line:
        sequences = GridQubitLineTuple((q00, q01))
        place_line.return_value = sequences

        assert line_on_device(device, length, method) == sequences
        place_line.assert_called_once_with(device, length)
Exemplo n.º 5
0
def _create_device(qubits: Iterable[cirq.GridQubit]):
    return cg.XmonDevice(
        cirq.Duration(nanos=0), cirq.Duration(nanos=0), cirq.Duration(nanos=0), qubits
    )