pyqrack-cuda 1.44.22__tar.gz → 1.44.24__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyqrack_cuda-1.44.22/pyqrack_cuda.egg-info → pyqrack_cuda-1.44.24}/PKG-INFO +1 -1
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/qrack_ace_backend.py +22 -7
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24/pyqrack_cuda.egg-info}/PKG-INFO +1 -1
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/setup.py +1 -1
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/LICENSE +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/MANIFEST.in +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/Makefile +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/README.md +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyproject.toml +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/__init__.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/neuron_activation_fn.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/pauli.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/qrack_circuit.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/qrack_neuron.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/qrack_neuron_torch_layer.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/qrack_simulator.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/qrack_stabilizer.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/qrack_system/__init__.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/qrack_system/qrack_system.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/quimb_circuit_type.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/stats/__init__.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/stats/load_quantized_data.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack/stats/quantize_by_range.py +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack_cuda.egg-info/SOURCES.txt +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack_cuda.egg-info/dependency_links.txt +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack_cuda.egg-info/not-zip-safe +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack_cuda.egg-info/requires.txt +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/pyqrack_cuda.egg-info/top_level.txt +0 -0
- {pyqrack_cuda-1.44.22 → pyqrack_cuda-1.44.24}/setup.cfg +0 -0
@@ -38,8 +38,18 @@ class QrackAceBackend:
|
|
38
38
|
col_length(int): Qubits per column.
|
39
39
|
"""
|
40
40
|
|
41
|
-
def __init__(
|
42
|
-
self
|
41
|
+
def __init__(
|
42
|
+
self,
|
43
|
+
qubit_count=-1,
|
44
|
+
alternating_codes=True,
|
45
|
+
isTensorNetwork=False,
|
46
|
+
toClone=None,
|
47
|
+
):
|
48
|
+
self.sim = (
|
49
|
+
toClone.sim.clone()
|
50
|
+
if toClone
|
51
|
+
else QrackSimulator(3 * qubit_count + 1, isTensorNetwork=isTensorNetwork)
|
52
|
+
)
|
43
53
|
self._ancilla = 3 * qubit_count
|
44
54
|
self._factor_width(qubit_count)
|
45
55
|
self.alternating_codes = alternating_codes
|
@@ -107,7 +117,9 @@ class QrackAceBackend:
|
|
107
117
|
if ((not self.alternating_codes) and reverse) or (even_row == reverse):
|
108
118
|
if self._is_init[lq]:
|
109
119
|
self._cx_shadow(hq[0], hq[1])
|
110
|
-
|
120
|
+
self.sim.mcx([hq[1]], hq[2])
|
121
|
+
else:
|
122
|
+
self.sim.mcx([hq[2]], hq[1])
|
111
123
|
else:
|
112
124
|
self.sim.mcx([hq[0]], hq[1])
|
113
125
|
if self._is_init[lq]:
|
@@ -128,6 +140,8 @@ class QrackAceBackend:
|
|
128
140
|
self.sim.mcx([hq[0]], hq[1])
|
129
141
|
|
130
142
|
def _correct(self, lq):
|
143
|
+
if not self._is_init[lq]:
|
144
|
+
return
|
131
145
|
# We can't use true syndrome-based error correction,
|
132
146
|
# because one of the qubits in the code is separated.
|
133
147
|
# However, we can get pretty close!
|
@@ -154,7 +168,7 @@ class QrackAceBackend:
|
|
154
168
|
even_row = not (row & 1)
|
155
169
|
single_bit = 0
|
156
170
|
other_bits = []
|
157
|
-
if
|
171
|
+
if not self.alternating_codes or even_row:
|
158
172
|
single_bit = 2
|
159
173
|
other_bits = [0, 1]
|
160
174
|
else:
|
@@ -191,6 +205,8 @@ class QrackAceBackend:
|
|
191
205
|
self.sim.force_m(self._ancilla, False)
|
192
206
|
|
193
207
|
def _correct_if_like_h(self, th, lq):
|
208
|
+
if not self._is_init[lq]:
|
209
|
+
return
|
194
210
|
while th > math.pi:
|
195
211
|
th -= 2 * math.pi
|
196
212
|
while th <= -math.pi:
|
@@ -199,7 +215,6 @@ class QrackAceBackend:
|
|
199
215
|
if not math.isclose(th, 0):
|
200
216
|
self._correct(lq)
|
201
217
|
|
202
|
-
|
203
218
|
def u(self, th, ph, lm, lq):
|
204
219
|
while ph > math.pi:
|
205
220
|
ph -= 2 * math.pi
|
@@ -240,7 +255,6 @@ class QrackAceBackend:
|
|
240
255
|
self._encode(hq)
|
241
256
|
|
242
257
|
def h(self, lq):
|
243
|
-
self._correct(lq)
|
244
258
|
hq = self._unpack(lq)
|
245
259
|
self._decode(hq)
|
246
260
|
self.sim.h(hq[0])
|
@@ -300,6 +314,8 @@ class QrackAceBackend:
|
|
300
314
|
return
|
301
315
|
|
302
316
|
if not self._is_init[lq1]:
|
317
|
+
hq1 = self._unpack(lq1)
|
318
|
+
hq2 = self._unpack(lq2)
|
303
319
|
gate([hq1[0]], hq2[0])
|
304
320
|
gate([hq1[1]], hq2[1])
|
305
321
|
gate([hq1[2]], hq2[2])
|
@@ -341,7 +357,6 @@ class QrackAceBackend:
|
|
341
357
|
gate([hq1[1]], hq2[1])
|
342
358
|
gate([hq1[2]], hq2[2])
|
343
359
|
|
344
|
-
|
345
360
|
def cx(self, lq1, lq2):
|
346
361
|
self._cpauli(lq1, lq2, False, Pauli.PauliX)
|
347
362
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|