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())))
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))
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))
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)
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)
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()
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)