Skip to content

Commit 29ad26c

Browse files
authored
Fixed state superposition initialisation. (#45)
Fixed-by: Michał Kordasz <Sandalas98>
1 parent 5507db5 commit 29ad26c

File tree

9 files changed

+60
-48
lines changed

9 files changed

+60
-48
lines changed

examples/ifrqi.ipynb

Lines changed: 19 additions & 19 deletions
Large diffs are not rendered by default.

examples/mcqi.ipynb

Lines changed: 21 additions & 21 deletions
Large diffs are not rendered by default.

geqie/encodings/ifrqi/init.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@
44

55

66
def init(n_qubits: int) -> Statevector:
7-
state = np.tile([1, 0], 2**(n_qubits-4))
7+
base_state = np.zeros(2**4, dtype=int)
8+
base_state[0] = 1
9+
state = np.tile(base_state, 2**(n_qubits-4))
810
return Statevector(state)

geqie/encodings/mcqi/init.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,7 @@
22
from qiskit.quantum_info import Statevector
33

44
def init(n_qubits: int) -> Statevector:
5-
state = np.tile([1, 0], 2**(n_qubits - 3))
5+
base_state = np.zeros(2**3, dtype=int)
6+
base_state[0] = 1
7+
state = np.tile(base_state, 2**(n_qubits - 3))
68
return Statevector(state)

geqie/encodings/ncqi/init.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@
33
from qiskit.quantum_info import Statevector
44

55
def init(n_qubits: int) -> Statevector:
6-
state = np.tile([1, 0], 2**(n_qubits - 10))
6+
base_state = np.zeros(2**10, dtype=int)
7+
base_state[0] = 1
8+
state = np.tile(base_state, 2**(n_qubits - 10))
79
return Statevector(state)

geqie/encodings/neqr/init.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@
33
from qiskit.quantum_info import Statevector
44

55
def init(n_qubits: int) -> Statevector:
6-
state = np.tile([1, 0], 2**(n_qubits - 8))
6+
base_state = np.zeros(2**8, dtype=int)
7+
base_state[0] = 1
8+
state = np.tile(base_state, 2**(n_qubits - 8))
79
return Statevector(state)

geqie/encodings/qrci/init.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
from qiskit.quantum_info import Statevector
44

5+
56
def init(n_qubits: int) -> Statevector:
6-
state = np.tile([1], 2**(n_qubits - 3))
7+
base_state = np.zeros(2**3, dtype=int)
8+
base_state[0] = 1
9+
state = np.tile(base_state, 2 ** (n_qubits - 3))
710
return Statevector(state)

geqie/encodings/qualpi/init.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@
33
from qiskit.quantum_info import Statevector
44

55
def init(n_qubits: int) -> Statevector:
6-
state = np.tile([1, 0], 2**(n_qubits - 8))
6+
base_state = np.zeros(2**8, dtype=int)
7+
base_state[0] = 1
8+
state = np.tile(base_state, 2**(n_qubits - 8))
79
return Statevector(state)

geqie/main.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,7 @@ def encode(
5454
print(f"{init_state=}")
5555

5656
circuit = QuantumCircuit(n_qubits)
57-
if not np.all(init_state.data == 1):
58-
circuit.initialize(init_state, range(n_qubits-data_vectors[0].num_qubits - 1, n_qubits), normalize=True)
57+
circuit.initialize(init_state, range(n_qubits), normalize=True)
5958
circuit.append(U_op, range(n_qubits))
6059
circuit.measure_all()
6160

0 commit comments

Comments
 (0)