示例#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())))
示例#2
0
文件: gates.py 项目: timasq/pyquil
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))
示例#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))
示例#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)
示例#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)
示例#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()
示例#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)