pyqrack-cuda 1.44.33__tar.gz → 1.44.35__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.33/pyqrack_cuda.egg-info → pyqrack_cuda-1.44.35}/PKG-INFO +1 -1
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/qrack_ace_backend.py +14 -14
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35/pyqrack_cuda.egg-info}/PKG-INFO +1 -1
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/setup.py +1 -1
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/LICENSE +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/MANIFEST.in +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/Makefile +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/README.md +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyproject.toml +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/__init__.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/neuron_activation_fn.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/pauli.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/qrack_circuit.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/qrack_neuron.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/qrack_neuron_torch_layer.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/qrack_simulator.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/qrack_stabilizer.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/qrack_system/__init__.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/qrack_system/qrack_system.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/quimb_circuit_type.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/stats/__init__.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/stats/load_quantized_data.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack/stats/quantize_by_range.py +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack_cuda.egg-info/SOURCES.txt +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack_cuda.egg-info/dependency_links.txt +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack_cuda.egg-info/not-zip-safe +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack_cuda.egg-info/requires.txt +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/pyqrack_cuda.egg-info/top_level.txt +0 -0
- {pyqrack_cuda-1.44.33 → pyqrack_cuda-1.44.35}/setup.cfg +0 -0
@@ -434,33 +434,33 @@ class QrackAceBackend:
|
|
434
434
|
bits = []
|
435
435
|
for q in other_bits:
|
436
436
|
bits.append(self.sim.m(hq[q]))
|
437
|
-
|
438
|
-
syndrome += 1
|
439
|
-
# single_bit never shares entanglement with other_bits.
|
440
|
-
# In the ideal, it should simply duplicate other_bits.
|
441
|
-
# So get more precision by using it analytically.
|
442
|
-
analytical = self.sim.prob(hq[single_bit])
|
443
|
-
syndrome += analytical
|
444
|
-
result = True if (syndrome >= 1.5) else False
|
437
|
+
syndrome += bits[-1]
|
445
438
|
# The two separable parts of the code are correlated,
|
446
439
|
# but not non-locally, via entanglement.
|
447
440
|
# Prefer to collapse the analytical part toward agreement.
|
448
|
-
|
441
|
+
if syndrome == 0:
|
442
|
+
self.sim.force_m(hq[single_bit], False)
|
443
|
+
elif syndrome == 2:
|
444
|
+
syndrome += self.sim.force_m(hq[single_bit], True)
|
445
|
+
else:
|
446
|
+
syndrome += self.sim.m(hq[single_bit])
|
447
|
+
result = True if (syndrome > 1) else False
|
449
448
|
for i in range(2):
|
450
449
|
if bits[i] != result:
|
451
450
|
self.sim.x(hq[other_bits[i]])
|
452
|
-
if bits[2] != result:
|
453
|
-
self.sim.x(hq[single_bit])
|
454
451
|
self._is_init[lq] = False
|
455
452
|
|
456
453
|
return result
|
457
454
|
|
458
455
|
def m_all(self):
|
459
456
|
result = 0
|
460
|
-
|
461
|
-
|
457
|
+
# Whenever a nonzero syndrome occurs (so the code has an error),
|
458
|
+
# we insert the more-probable results and collapse towards it.
|
459
|
+
# Randomize the order of post-selection to amortize error.
|
460
|
+
lqubits = random.shuffle(list(range(self.sim.num_qubits() // 3)))
|
461
|
+
for lq in lqubits:
|
462
462
|
if self.m(lq):
|
463
|
-
result |= 1
|
463
|
+
result |= 1 << lq
|
464
464
|
|
465
465
|
return result
|
466
466
|
|
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
|