pyqrack-cuda 1.45.0__tar.gz → 1.45.2__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.
Files changed (29) hide show
  1. {pyqrack_cuda-1.45.0/pyqrack_cuda.egg-info → pyqrack_cuda-1.45.2}/PKG-INFO +1 -1
  2. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/qrack_ace_backend.py +13 -14
  3. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2/pyqrack_cuda.egg-info}/PKG-INFO +1 -1
  4. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/setup.py +1 -1
  5. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/LICENSE +0 -0
  6. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/MANIFEST.in +0 -0
  7. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/Makefile +0 -0
  8. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/README.md +0 -0
  9. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyproject.toml +0 -0
  10. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/__init__.py +0 -0
  11. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/neuron_activation_fn.py +0 -0
  12. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/pauli.py +0 -0
  13. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/qrack_circuit.py +0 -0
  14. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/qrack_neuron.py +0 -0
  15. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/qrack_neuron_torch_layer.py +0 -0
  16. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/qrack_simulator.py +0 -0
  17. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/qrack_stabilizer.py +0 -0
  18. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/qrack_system/__init__.py +0 -0
  19. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/qrack_system/qrack_system.py +0 -0
  20. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/quimb_circuit_type.py +0 -0
  21. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/stats/__init__.py +0 -0
  22. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/stats/load_quantized_data.py +0 -0
  23. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack/stats/quantize_by_range.py +0 -0
  24. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack_cuda.egg-info/SOURCES.txt +0 -0
  25. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack_cuda.egg-info/dependency_links.txt +0 -0
  26. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack_cuda.egg-info/not-zip-safe +0 -0
  27. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack_cuda.egg-info/requires.txt +0 -0
  28. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/pyqrack_cuda.egg-info/top_level.txt +0 -0
  29. {pyqrack_cuda-1.45.0 → pyqrack_cuda-1.45.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.45.0
3
+ Version: 1.45.2
4
4
  Summary: pyqrack - Pure Python vm6502q/qrack Wrapper
5
5
  Home-page: https://github.com/vm6502q/pyqrack
6
6
  Author: Daniel Strano
@@ -430,34 +430,31 @@ class QrackAceBackend:
430
430
  else:
431
431
  single_bit = 0
432
432
  other_bits = [1, 2]
433
+ # The syndrome of "other_bits" is guaranteed to be fixed, after this.
434
+ self._correct(lq)
433
435
  syndrome = 0
434
- bits = []
435
436
  for q in other_bits:
436
- bits.append(self.sim.m(hq[q]))
437
- syndrome += bits[-1]
437
+ syndrome += self.sim.m(hq[q])
438
438
  # The two separable parts of the code are correlated,
439
439
  # but not non-locally, via entanglement.
440
- # Prefer to collapse the analytical part toward agreement.
440
+ # Prefer to collapse the third toward agreement.
441
441
  if syndrome == 0:
442
442
  self.sim.force_m(hq[single_bit], False)
443
443
  elif syndrome == 2:
444
444
  syndrome += self.sim.force_m(hq[single_bit], True)
445
445
  else:
446
- syndrome += self.sim.m(hq[single_bit])
447
- result = True if (syndrome > 1) else False
448
- for i in range(2):
449
- if bits[i] != result:
450
- self.sim.x(hq[other_bits[i]])
446
+ raise RuntimeError("Unexpected syndrome in m()!")
451
447
  self._is_init[lq] = False
452
448
 
453
- return result
449
+ return True if (syndrome > 1) else False
454
450
 
455
451
  def m_all(self):
456
452
  result = 0
457
453
  # Whenever a nonzero syndrome occurs (so the code has an error),
458
454
  # we insert the more-probable results and collapse towards it.
459
455
  # Randomize the order of post-selection to amortize error.
460
- lqubits = random.shuffle(list(range(self.sim.num_qubits() // 3)))
456
+ lqubits = list(range(self.sim.num_qubits() // 3))
457
+ random.shuffle(lqubits)
461
458
  for lq in lqubits:
462
459
  if self.m(lq):
463
460
  result |= 1 << lq
@@ -467,12 +464,14 @@ class QrackAceBackend:
467
464
  def measure_shots(self, q, s, high_accuracy=True):
468
465
  if high_accuracy:
469
466
  samples = []
467
+ _q = q.copy()
470
468
  for _ in range(s):
471
469
  clone = self.sim.clone()
472
470
  sample = 0
473
- for i in range(len(q)):
474
- if clone.m(q[i]):
475
- sample |= 1 << i
471
+ random.shuffle(_q)
472
+ for b in _q:
473
+ if clone.m(b):
474
+ sample |= 1 << q.index(b)
476
475
  samples.append(sample)
477
476
 
478
477
  return samples
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.45.0
3
+ Version: 1.45.2
4
4
  Summary: pyqrack - Pure Python vm6502q/qrack Wrapper
5
5
  Home-page: https://github.com/vm6502q/pyqrack
6
6
  Author: Daniel Strano
@@ -7,7 +7,7 @@ from setuptools import setup
7
7
  from setuptools.command.build_py import build_py
8
8
 
9
9
 
10
- VERSION = "1.45.0"
10
+ VERSION = "1.45.2"
11
11
 
12
12
  # Read long description from README.
13
13
  README_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'README.md')
File without changes
File without changes
File without changes
File without changes
File without changes