def test_conventions(): qubit = numpy.random.randint(0, 3) angle = Variable("angle") Rx1 = Rx(target=qubit, angle=angle) Rx2 = QCircuit.wrap_gate( RotationGateImpl(axis="X", target=qubit, angle=angle)) Rx3 = QCircuit.wrap_gate( RotationGateImpl(axis="x", target=qubit, angle=angle)) Rx4 = RotationGate(axis=0, target=qubit, angle=angle) Rx5 = RotationGate(axis="X", target=qubit, angle=angle) Rx6 = RotationGate(axis="x", target=qubit, angle=angle) Rx7 = RotationGate(axis=0, target=qubit, angle=angle) Rx7.axis = "X" ll = [Rx1, Rx2, Rx3, Rx4, Rx5, Rx6, Rx7] for l1 in ll: for l2 in ll: assert (l1 == l2) qubit = 2 for c in [None, 0, 3]: for angle in ["angle", 0, 1.234]: for axes in [[0, "x", "X"], [1, "y", "Y"], [2, "z", "Z"]]: ll = [ RotationGate(axis=i, target=qubit, control=c, angle=angle) for i in axes ] for l1 in ll: for l2 in ll: assert (l1 == l2) l1.axis = axes[numpy.random.randint(0, 2)] assert (l1 == l2)
def test_circuit_from_moments(): c = QCircuit() c += CNOT(target=0, control=(1, 2, 3)) c += Phase(phi=numpy.pi, target=4) c += Rx(angle=Variable('a'), target=[0, 3]) c += H(target=[0, 1]) c += Rx(angle=Variable('a'), target=[2, 3]) ## table[1] should equal 1 at this point, len(moments should be 3) c += Z(target=1) c += Rx(angle=Variable('a'), target=[0, 3]) moms = c.moments c2 = QCircuit.from_moments(moms) assert c == c2
def test_moments(): c = QCircuit() c += CNOT(target=0, control=(1, 2, 3)) c += H(target=[0, 1]) c += Rx(angle=numpy.pi, target=[0, 3]) c += Z(target=1) c += Phase(phi=numpy.pi, target=4) moms = c.moments assert len(moms) == 3 assert (moms[0].gates[1].parameter == assign_variable(numpy.pi)) assert (moms[0].gates[1].target == (4, ))
def test_canonical_moments(): c = QCircuit() c += CNOT(target=0, control=(1, 2, 3)) c += Rx(angle=Variable('a'), target=[0, 3]) c += H(target=[0, 1]) c += Rx(angle=Variable('a'), target=[2, 3]) c += Rx(angle=Variable('a'), target=[0, 3]) c += Z(target=1) c += Phase(phi=numpy.pi, target=4) moms = c.canonical_moments assert len(moms) == 6 assert (moms[0].gates[1].parameter == assign_variable(numpy.pi)) assert (moms[0].gates[1].target == (4, )) assert hasattr(moms[3].gates[0], 'axis') assert len(moms[0].qubits) == 5