Beispiel #1
0
 def test_qudit(self) -> None:
     circuit = Circuit(3, [2, 3, 3])
     assert len(circuit.get_gate_set()) == 0
     circuit.append_gate(U3Gate(), [0])
     assert len(circuit.get_gate_set()) == 1
     assert U3Gate() in circuit.get_gate_set()
     circuit.append_gate(XGate(), [0])
     assert len(circuit.get_gate_set()) == 2
     assert U3Gate() in circuit.get_gate_set()
     assert XGate() in circuit.get_gate_set()
     circuit.append_gate(ZGate(), [0])
     assert len(circuit.get_gate_set()) == 3
     assert U3Gate() in circuit.get_gate_set()
     assert XGate() in circuit.get_gate_set()
     assert ZGate() in circuit.get_gate_set()
     circuit.append_gate(TGate(), [0])
     assert len(circuit.get_gate_set()) == 4
     assert U3Gate() in circuit.get_gate_set()
     assert XGate() in circuit.get_gate_set()
     assert ZGate() in circuit.get_gate_set()
     assert TGate() in circuit.get_gate_set()
     circuit.append_gate(CSUMGate(), [1, 2])
     assert len(circuit.get_gate_set()) == 5
     assert U3Gate() in circuit.get_gate_set()
     assert XGate() in circuit.get_gate_set()
     assert ZGate() in circuit.get_gate_set()
     assert TGate() in circuit.get_gate_set()
     assert CSUMGate() in circuit.get_gate_set()
Beispiel #2
0
 def test_removing_gate(self) -> None:
     circuit = Circuit(1)
     assert len(circuit.get_gate_set()) == 0
     circuit.append_gate(U3Gate(), [0])
     circuit.append_gate(XGate(), [0])
     circuit.append_gate(ZGate(), [0])
     circuit.append_gate(TGate(), [0])
     assert len(circuit.get_gate_set()) == 4
     assert U3Gate() in circuit.get_gate_set()
     assert XGate() in circuit.get_gate_set()
     assert ZGate() in circuit.get_gate_set()
     assert TGate() in circuit.get_gate_set()
     circuit.remove(TGate())
     assert len(circuit.get_gate_set()) == 3
     assert U3Gate() in circuit.get_gate_set()
     assert XGate() in circuit.get_gate_set()
     assert ZGate() in circuit.get_gate_set()
     circuit.remove(XGate())
     assert len(circuit.get_gate_set()) == 2
     assert U3Gate() in circuit.get_gate_set()
     assert ZGate() in circuit.get_gate_set()
     circuit.remove(ZGate())
     assert len(circuit.get_gate_set()) == 1
     assert U3Gate() in circuit.get_gate_set()
     circuit.remove(U3Gate())
     assert len(circuit.get_gate_set()) == 0
Beispiel #3
0
def simple_circuit() -> Circuit:
    """Provides a simple circuit fixture."""
    circuit = Circuit(2)
    circuit.append_gate(XGate(), [0])
    circuit.append_gate(CNOTGate(), [0, 1])
    circuit.append_gate(XGate(), [1])
    circuit.append_gate(CNOTGate(), [1, 0])
    return circuit
Beispiel #4
0
 def test_example(self) -> None:
     circuit = Circuit(2)
     circuit.append_gate(HGate(), [0])
     assert circuit.find_available_cycle([1]) == 0
     circuit.append_gate(XGate(), [0])
     circuit.append_gate(ZGate(), [1])
     assert circuit.find_available_cycle([1]) == 1
Beispiel #5
0
 def test_example(self) -> None:
     circuit = Circuit(2)
     circuit.append_gate(HGate(), [0])
     circuit.append_gate(XGate(), [0])
     circuit.append_gate(ZGate(), [1])
     assert not circuit.is_cycle_unoccupied(0, [0])
     assert circuit.is_cycle_unoccupied(1, [1])
Beispiel #6
0
    def test_invalid_value_2(self) -> None:
        circuit = Circuit(2)
        circuit.append_gate(HGate(), [0])
        circuit.append_gate(CNOTGate(), [0, 1])

        try:
            circuit.point(XGate())
        except ValueError:
            return

        assert False, 'Should not have reached here.'
Beispiel #7
0
    def test_example(self) -> None:
        circuit = Circuit(1)

        opH = Operation(HGate(), [0])
        circuit.append(opH)
        assert circuit.point(opH).__repr__(
        ) == 'CircuitPoint(cycle=0, qudit=0)'

        opX = Operation(XGate(), [0])
        circuit.append(opX)
        assert circuit.point(opX).__repr__(
        ) == 'CircuitPoint(cycle=1, qudit=0)'
Beispiel #8
0
 IdentityGate(1),
 IdentityGate(2),
 IdentityGate(3),
 IdentityGate(4),
 ISwapGate(),
 # PermutationGate(),  # TODO
 SGate(),
 SdgGate(),
 SqrtCNOTGate(),
 SwapGate(),
 SXGate(),
 SqrtXGate(),
 TGate(),
 TdgGate(),
 ConstantUnitaryGate(TOFFOLI),  # TODO
 XGate(),
 XXGate(),
 YGate(),
 ZGate(),
 # PauliGate(),  # TODO
 RXGate(),
 RYGate(),
 RZGate(),
 U1Gate(),
 U2Gate(),
 U3Gate(),
 U8Gate(),
 DaggerGate(TGate()),
 DaggerGate(CZGate()),
 DaggerGate(U1Gate()),
 DaggerGate(U8Gate()),
Beispiel #9
0
 def test_get_gate_set(self, simple_circuit: Circuit) -> None:
     gate_set = simple_circuit.get_gate_set()
     assert isinstance(gate_set, set)
     assert len(gate_set) == 2
     assert XGate() in gate_set
     assert CNOTGate() in gate_set