pyqrack-cuda 1.49.6__tar.gz → 1.49.8__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.49.6/pyqrack_cuda.egg-info → pyqrack_cuda-1.49.8}/PKG-INFO +1 -1
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/qrack_ace_backend.py +26 -16
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8/pyqrack_cuda.egg-info}/PKG-INFO +1 -1
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/setup.py +1 -1
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/LICENSE +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/MANIFEST.in +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/Makefile +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/README.md +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyproject.toml +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/__init__.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/neuron_activation_fn.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/pauli.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/qrack_circuit.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/qrack_neuron.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/qrack_neuron_torch_layer.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/qrack_simulator.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/qrack_stabilizer.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/qrack_system/__init__.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/qrack_system/qrack_system.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/quimb_circuit_type.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/stats/__init__.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/stats/load_quantized_data.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack/stats/quantize_by_range.py +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack_cuda.egg-info/SOURCES.txt +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack_cuda.egg-info/dependency_links.txt +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack_cuda.egg-info/not-zip-safe +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack_cuda.egg-info/requires.txt +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/pyqrack_cuda.egg-info/top_level.txt +0 -0
- {pyqrack_cuda-1.49.6 → pyqrack_cuda-1.49.8}/setup.cfg +0 -0
@@ -340,12 +340,15 @@ class QrackAceBackend:
|
|
340
340
|
|
341
341
|
if not math.isclose(ph, -lm) and not math.isclose(abs(ph), math.pi / 2):
|
342
342
|
# Produces/destroys superposition
|
343
|
-
self.
|
344
|
-
|
343
|
+
if self._is_init[lq]:
|
344
|
+
self._correct_if_like_h(th, lq)
|
345
|
+
self.sim.mcx([hq[0]], hq[1])
|
345
346
|
self.sim.u(hq[0], th, ph, lm)
|
346
|
-
|
347
|
-
|
348
|
-
|
347
|
+
self.sim.u(hq[2], th, ph, lm)
|
348
|
+
if self._is_init[lq]:
|
349
|
+
self.sim.mcx([hq[0]], hq[1])
|
350
|
+
else:
|
351
|
+
self._encode(lq, hq)
|
349
352
|
else:
|
350
353
|
# Shouldn't produce/destroy superposition
|
351
354
|
for b in hq:
|
@@ -361,7 +364,7 @@ class QrackAceBackend:
|
|
361
364
|
th -= 2 * math.pi
|
362
365
|
while th <= -math.pi:
|
363
366
|
th += 2 * math.pi
|
364
|
-
if p == Pauli.PauliY:
|
367
|
+
if self._is_init[lq] and (p == Pauli.PauliY):
|
365
368
|
self._correct_if_like_h(th, lq)
|
366
369
|
|
367
370
|
if (p == Pauli.PauliZ) or math.isclose(abs(th), math.pi):
|
@@ -370,11 +373,14 @@ class QrackAceBackend:
|
|
370
373
|
self.sim.r(p, th, b)
|
371
374
|
else:
|
372
375
|
# Produces/destroys superposition
|
373
|
-
self.
|
376
|
+
if self._is_init[lq]:
|
377
|
+
self.sim.mcx([hq[0]], hq[1])
|
374
378
|
self.sim.r(p, th, hq[0])
|
375
|
-
|
376
|
-
|
377
|
-
|
379
|
+
self.sim.r(p, th, hq[2])
|
380
|
+
if self._is_init[lq]:
|
381
|
+
self.sim.mcx([hq[0]], hq[1])
|
382
|
+
else:
|
383
|
+
self._encode(lq, hq)
|
378
384
|
|
379
385
|
def h(self, lq):
|
380
386
|
hq = self._unpack(lq)
|
@@ -382,11 +388,15 @@ class QrackAceBackend:
|
|
382
388
|
self.sim.h(hq[0])
|
383
389
|
return
|
384
390
|
|
385
|
-
self.
|
391
|
+
self._correct(lq)
|
392
|
+
if self._is_init[lq]:
|
393
|
+
self.sim.mcx([hq[0]], hq[1])
|
386
394
|
self.sim.h(hq[0])
|
387
|
-
|
388
|
-
|
389
|
-
|
395
|
+
self.sim.h(hq[2])
|
396
|
+
if self._is_init[lq]:
|
397
|
+
self.sim.mcx([hq[0]], hq[1])
|
398
|
+
else:
|
399
|
+
self._encode(lq, hq)
|
390
400
|
|
391
401
|
def s(self, lq):
|
392
402
|
hq = self._unpack(lq)
|
@@ -1103,7 +1113,7 @@ class QrackAceBackend:
|
|
1103
1113
|
if self._coupling_map:
|
1104
1114
|
return self._coupling_map
|
1105
1115
|
|
1106
|
-
coupling_map =
|
1116
|
+
coupling_map = set()
|
1107
1117
|
rows, cols = self.row_length, self.col_length
|
1108
1118
|
|
1109
1119
|
# Map each column index to its full list of logical qubit indices
|
@@ -1131,7 +1141,7 @@ class QrackAceBackend:
|
|
1131
1141
|
for r in range(0, rows):
|
1132
1142
|
b = logical_index(r, c)
|
1133
1143
|
if a != b:
|
1134
|
-
coupling_map.
|
1144
|
+
coupling_map.add((a, b))
|
1135
1145
|
|
1136
1146
|
self._coupling_map = sorted(coupling_map)
|
1137
1147
|
|
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
|