Example #1
0
 def test_append_gate_5(self) -> None:
     circuit = Circuit(4)
     circuit.append_gate(CNOTGate(), [0, 1])
     circuit.append_gate(CNOTGate(), [1, 2])
     circuit.append_gate(CNOTGate(), [2, 3])
     circuit.insert_qudit(4)
     circuit.append_gate(CNOTGate(), [0, 3])
     assert circuit.get_size() == 5
     assert len(circuit.get_radixes()) == 5
     assert circuit.get_radixes().count(2) == 5
     assert circuit[3, 0].gate == CNOTGate()
     assert circuit[3, 0].location == (0, 3)
     assert circuit[0, 1].gate == CNOTGate()
     assert circuit[0, 1].location == (0, 1)
     assert circuit[1, 2].gate == CNOTGate()
     assert circuit[1, 2].location == (1, 2)
     assert circuit[2, 3].gate == CNOTGate()
     assert circuit[2, 3].location == (2, 3)
     assert circuit[3, 3].gate == CNOTGate()
     assert circuit[3, 3].location == (0, 3)
     assert circuit[0, 0].gate == CNOTGate()
     assert circuit[0, 0].location == (0, 1)
     assert circuit[1, 1].gate == CNOTGate()
     assert circuit[1, 1].location == (1, 2)
     assert circuit[2, 2].gate == CNOTGate()
     assert circuit[2, 2].location == (2, 3)
Example #2
0
 def test_value_invalid_3(self) -> None:
     circuit = Circuit(1)
     try:
         circuit.insert_qudit(0, 1)
     except ValueError:
         return
     except BaseException:
         assert False, 'Unexpected Exception.'
Example #3
0
 def test_type_invalid_6(self, not_an_int: Any) -> None:
     circuit = Circuit(4, [2, 2, 3, 3])
     try:
         circuit.insert_qudit(not_an_int, not_an_int)
     except TypeError:
         return
     except BaseException:
         assert False, 'Unexpected Exception.'
Example #4
0
 def test_type_invalid_3(self, not_an_int: Any, an_int: int) -> None:
     circuit = Circuit(1)
     try:
         circuit.insert_qudit(an_int, not_an_int)
     except TypeError:
         return
     except BaseException:
         assert False, 'Unexpected Exception.'
Example #5
0
 def test_type_valid_2(self, an_int: int) -> None:
     circuit = Circuit(4, [2, 2, 3, 3])
     try:
         circuit.insert_qudit(an_int, an_int)
     except TypeError:
         assert False, 'Unexpected TypeError.'
     except BaseException:
         return
Example #6
0
 def test_qutrit(self) -> None:
     circuit = Circuit(1, [3])
     assert circuit.get_size() == 1
     assert circuit.get_dim() == 3
     assert len(circuit.get_radixes()) == 1
     circuit.insert_qudit(0, 3)
     assert circuit.get_size() == 2
     assert circuit.get_dim() == 9
     assert len(circuit.get_radixes()) == 2
     circuit.insert_qudit(0, 3)
     assert circuit.get_size() == 3
     assert circuit.get_dim() == 27
     assert len(circuit.get_radixes()) == 3
Example #7
0
 def test_default(self) -> None:
     circuit = Circuit(1)
     assert circuit.get_size() == 1
     assert circuit.get_dim() == 2
     assert len(circuit.get_radixes()) == 1
     circuit.insert_qudit(0)
     assert circuit.get_size() == 2
     assert circuit.get_dim() == 4
     assert len(circuit.get_radixes()) == 2
     circuit.insert_qudit(0)
     assert circuit.get_size() == 3
     assert circuit.get_dim() == 8
     assert len(circuit.get_radixes()) == 3
Example #8
0
 def test_multi_gate_3(self, gen_random_utry_np: Any) -> None:
     circuit = Circuit(4)
     three_qubit_gate = ConstantUnitaryGate(
         gen_random_utry_np(12), [2, 2, 3],
     )
     circuit.insert_qudit(2, 3)
     assert circuit.get_size() == 5
     assert len(circuit.get_radixes()) == 5
     assert circuit.get_radixes()[0] == 2
     assert circuit.get_radixes()[1] == 2
     assert circuit.get_radixes()[2] == 3
     assert circuit.get_radixes()[3] == 2
     assert circuit.get_radixes()[4] == 2
     circuit.append_gate(three_qubit_gate, [0, 1, 2])
     assert circuit[0, 0].gate == three_qubit_gate
     assert circuit[0, 0].location == (0, 1, 2)
Example #9
0
 def test_hybrid(self) -> None:
     circuit = Circuit(1)
     assert circuit.get_size() == 1
     assert circuit.get_dim() == 2
     assert len(circuit.get_radixes()) == 1
     circuit.insert_qudit(0, 4)
     assert circuit.get_size() == 2
     assert circuit.get_dim() == 8
     assert len(circuit.get_radixes()) == 2
     assert circuit.get_radixes()[0] == 4
     assert circuit.get_radixes()[1] == 2
     circuit.insert_qudit(-1, 3)
     assert circuit.get_size() == 3
     assert circuit.get_dim() == 24
     assert len(circuit.get_radixes()) == 3
     assert circuit.get_radixes()[0] == 4
     assert circuit.get_radixes()[1] == 3
     assert circuit.get_radixes()[2] == 2
Example #10
0
 def test_multi_gate_1(self, gen_random_utry_np: Any) -> None:
     circuit = Circuit(4)
     three_qubit_gate = ConstantUnitaryGate(gen_random_utry_np(8))
     circuit.append_gate(three_qubit_gate, [1, 2, 3])
     circuit.append_gate(three_qubit_gate, [0, 2, 3])
     circuit.append_gate(three_qubit_gate, [0, 1, 3])
     circuit.append_gate(three_qubit_gate, [0, 1, 2])
     circuit.insert_qudit(0)
     assert circuit.get_size() == 5
     assert len(circuit.get_radixes()) == 5
     assert circuit.get_radixes().count(2) == 5
     assert circuit[0, 2].gate == three_qubit_gate
     assert circuit[0, 2].location == (2, 3, 4)
     assert circuit[1, 1].gate == three_qubit_gate
     assert circuit[1, 1].location == (1, 3, 4)
     assert circuit[2, 1].gate == three_qubit_gate
     assert circuit[2, 1].location == (1, 2, 4)
     assert circuit[3, 1].gate == three_qubit_gate
     assert circuit[3, 1].location == (1, 2, 3)