pyqrack-cuda 1.44.13__tar.gz → 1.44.14__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.44.13/pyqrack_cuda.egg-info → pyqrack_cuda-1.44.14}/PKG-INFO +1 -1
  2. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/qrack_ace_backend.py +25 -5
  3. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14/pyqrack_cuda.egg-info}/PKG-INFO +1 -1
  4. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/setup.py +1 -1
  5. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/LICENSE +0 -0
  6. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/MANIFEST.in +0 -0
  7. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/Makefile +0 -0
  8. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/README.md +0 -0
  9. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyproject.toml +0 -0
  10. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/__init__.py +0 -0
  11. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/neuron_activation_fn.py +0 -0
  12. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/pauli.py +0 -0
  13. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/qrack_circuit.py +0 -0
  14. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/qrack_neuron.py +0 -0
  15. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/qrack_neuron_torch_layer.py +0 -0
  16. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/qrack_simulator.py +0 -0
  17. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/qrack_stabilizer.py +0 -0
  18. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/qrack_system/__init__.py +0 -0
  19. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/qrack_system/qrack_system.py +0 -0
  20. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/quimb_circuit_type.py +0 -0
  21. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/stats/__init__.py +0 -0
  22. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/stats/load_quantized_data.py +0 -0
  23. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack/stats/quantize_by_range.py +0 -0
  24. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack_cuda.egg-info/SOURCES.txt +0 -0
  25. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack_cuda.egg-info/dependency_links.txt +0 -0
  26. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack_cuda.egg-info/not-zip-safe +0 -0
  27. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack_cuda.egg-info/requires.txt +0 -0
  28. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/pyqrack_cuda.egg-info/top_level.txt +0 -0
  29. {pyqrack_cuda-1.44.13 → pyqrack_cuda-1.44.14}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.44.13
3
+ Version: 1.44.14
4
4
  Summary: pyqrack - Pure Python vm6502q/qrack Wrapper
5
5
  Home-page: https://github.com/vm6502q/pyqrack
6
6
  Author: Daniel Strano
@@ -120,6 +120,9 @@ class QrackAceBackend:
120
120
  self.sim.mcx([hq[0]], hq[1])
121
121
 
122
122
  def _correct(self, lq):
123
+ # We can't use true syndrome-based error correction,
124
+ # because one of the qubits in the code is separated.
125
+ # However, we can get pretty close!
123
126
  hq = self._unpack(lq)
124
127
  shots = 1024
125
128
  samples = self.sim.measure_shots(hq, shots)
@@ -138,19 +141,36 @@ class QrackAceBackend:
138
141
  syndrome[1] += 1
139
142
  case 3:
140
143
  syndrome[2] += 1
144
+
145
+ row = (hq[0] // 3) // self.row_length
146
+ even_row = not (row & 1)
147
+ single_bit = 2 if (not self.alternating_codes or even_row) else 0
148
+
141
149
  max_syndrome = max(syndrome)
142
- if (2 * max_syndrome) > shots:
143
- error_bit = syndrome.index(max_syndrome)
144
- row = (hq[0] // 3) // self.row_length
145
- even_row = not (row & 1)
146
- single_bit = 2 if (not self.alternating_codes or even_row) else 0
150
+ error_bit = syndrome.index(max_syndrome)
151
+ if (2 * max_syndrome) >= shots:
152
+ # There is an error.
147
153
  if error_bit == single_bit:
154
+ # The stand-alone bit carries the error.
148
155
  self.sim.x(hq[error_bit])
149
156
  else:
157
+ # The coherent bits carry the error.
158
+ # Form their syndrome.
150
159
  self.sim.mcx([hq[1]], self._ancilla)
151
160
  self.sim.mcx([hq[2]], self._ancilla)
161
+ # Force the syndrome pathological
152
162
  self.sim.force_m(self._ancilla, True)
163
+ # Reset the ancilla.
164
+ self.sim.x(self._ancilla)
165
+ # Correct the bit flip.
153
166
  self.sim.x(hq[error_bit])
167
+ elif error_bit != single_bit:
168
+ # There is no error.
169
+ # Form the syndrome of the coherent bits.
170
+ self.sim.mcx([hq[1]], self._ancilla)
171
+ self.sim.mcx([hq[2]], self._ancilla)
172
+ # Force the syndrome non-pathological.
173
+ self.sim.force_m(self._ancilla, False)
154
174
 
155
175
 
156
176
  def u(self, th, ph, lm, lq):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.44.13
3
+ Version: 1.44.14
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.44.13"
10
+ VERSION = "1.44.14"
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