Ejemplo n.º 1
0
 def exitClassicalUnary(self, ctx):
     # type: (QuilParser.ClassicalUnaryContext) -> None
     if ctx.TRUE():
         self.result.append(ClassicalTrue(_addr(ctx.addr())))
     elif ctx.FALSE():
         self.result.append(ClassicalFalse(_addr(ctx.addr())))
     elif ctx.NOT():
         self.result.append(ClassicalNot(_addr(ctx.addr())))
Ejemplo n.º 2
0
def NOT(classical_reg):
    """
    Produce a NOT instruction.

    :param classical_reg: A classical register to modify.
    :return: A ClassicalNot instance.
    """
    return ClassicalNot(unpack_classical_reg(classical_reg))
Ejemplo n.º 3
0
def NOT(classical_reg: MemoryReferenceDesignator) -> ClassicalNot:
    """
    Produce a NOT instruction.

    :param classical_reg: A classical register to modify.
    :return: A ClassicalNot instance.
    """
    return ClassicalNot(unpack_classical_reg(classical_reg))
Ejemplo n.º 4
0
 def classical_unary(self, op, target):
     if op == "TRUE":
         return ClassicalMove(target, 1)
     elif op == "FALSE":
         return ClassicalMove(target, 0)
     elif op == "NEG":
         return ClassicalNeg(target)
     elif op == "NOT":
         return ClassicalNot(target)
Ejemplo n.º 5
0
 def classical_unary(self, op, target):
     if op == "TRUE":
         return ClassicalTrue(target)
     elif op == "FALSE":
         return ClassicalFalse(target)
     elif op == "NEG":
         return ClassicalNeg(target)
     elif op == "NOT":
         return ClassicalNot(target)
Ejemplo n.º 6
0
def test_is_protoquil():
    prog = Program(Declare('ro', 'BIT'), MEASURE(1, MemoryReference("ro", 0)),
                   H(1), RESET())
    validate_protoquil(prog)
    assert prog.is_protoquil()

    prog = Program(Declare('ro', 'BIT'), H(0), Y(1), CNOT(0, 1)) \
        .measure(0, MemoryReference("ro", 0)) \
        .if_then(MemoryReference("ro", 0), Program(X(0)), Program())
    with pytest.raises(ValueError):
        validate_protoquil(prog)
    assert not prog.is_protoquil()

    prog = Program(Declare('ro', 'BIT'), ClassicalNot(MemoryReference("ro",
                                                                      0)))
    with pytest.raises(ValueError):
        validate_protoquil(prog)
    assert not prog.is_protoquil()
Ejemplo n.º 7
0
def test_is_protoquil():
    prog = Program(Declare("ro", "BIT"), MEASURE(1, MemoryReference("ro", 0)),
                   H(1), RESET())
    validate_protoquil(prog)
    assert prog.is_protoquil()

    prog = (Program(Declare("ro", "BIT"), H(0), Y(1), CNOT(0, 1)).measure(
        0, MemoryReference("ro", 0)).if_then(MemoryReference("ro", 0),
                                             Program(X(0)), Program()))
    with pytest.raises(ValueError):
        validate_protoquil(prog)
    assert not prog.is_protoquil()

    prog = Program(Declare("ro", "BIT"), ClassicalNot(MemoryReference("ro",
                                                                      0)))
    with pytest.raises(ValueError):
        validate_protoquil(prog)
    assert not prog.is_protoquil()

    prog = Program(DefCalibration("I", [], [Qubit(0)], []), I(0))
    with pytest.raises(ValueError):
        validate_protoquil(prog)
    assert not prog.is_protoquil()
    assert prog.is_protoquil(quilt=True)