Example #1
0
def test_decompose_error():
    d = cubic_device(2, 2, 1, holes=[ThreeDGridQubit(1, 1, 0)])
    op = (cirq.ops.CCZ**1.5).on(*(d.qubit_list()))
    assert d.decompose_operation(op) == [op]

    op = cirq.H.on(ThreeDGridQubit(0, 0, 0))
    decomposition = d.decompose_operation(op)
    assert len(decomposition) == 2
    assert decomposition == [
        (cirq.Y**0.5).on(ThreeDGridQubit(0, 0, 0)),
        cirq.XPowGate(exponent=1.0,
                      global_shift=-0.25).on(ThreeDGridQubit(0, 0, 0))
    ]

    # MeasurementGate is not a GateOperation
    with pytest.raises(TypeError):
        d.decompose_operation(cirq.ops.MeasurementGate(num_qubits=1))
    # It has to be made into one
    assert PasqalDevice.is_pasqal_device_op(
        cirq.ops.GateOperation(cirq.ops.MeasurementGate(1),
                               [ThreeDGridQubit(0, 0, 0)]))

    assert PasqalDevice.is_pasqal_device_op(
        cirq.ops.X(ThreeDGridQubit(0, 0, 0)))
Example #2
0
def test_decompose_error():
    d = generic_device(3)
    op = (cirq.ops.CCZ**1.5).on(*(d.qubit_list()))
    assert d.decompose_operation(op) == [op]

    op = cirq.H.on(cirq.NamedQubit('q0'))
    decomposition = d.decompose_operation(op)
    assert len(decomposition) == 2
    assert decomposition == [
        (cirq.Y**0.5).on(cirq.NamedQubit('q0')),
        cirq.XPowGate(exponent=1.0,
                      global_shift=-0.25).on(cirq.NamedQubit('q0'))
    ]

    # MeasurementGate is not a GateOperation
    with pytest.raises(TypeError):
        d.decompose_operation(cirq.ops.MeasurementGate(num_qubits=2))
    # It has to be made into one
    assert d.is_pasqal_device_op(
        cirq.ops.GateOperation(cirq.ops.MeasurementGate(2),
                               [cirq.NamedQubit('q0'),
                                cirq.NamedQubit('q1')]))

    assert PasqalDevice.is_pasqal_device_op(cirq.ops.X(cirq.NamedQubit('q0')))