pyqrack-cuda 1.44.29__tar.gz → 1.44.31__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.29/pyqrack_cuda.egg-info → pyqrack_cuda-1.44.31}/PKG-INFO +1 -1
  2. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/qrack_ace_backend.py +33 -10
  3. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31/pyqrack_cuda.egg-info}/PKG-INFO +1 -1
  4. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/setup.py +1 -1
  5. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/LICENSE +0 -0
  6. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/MANIFEST.in +0 -0
  7. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/Makefile +0 -0
  8. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/README.md +0 -0
  9. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyproject.toml +0 -0
  10. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/__init__.py +0 -0
  11. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/neuron_activation_fn.py +0 -0
  12. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/pauli.py +0 -0
  13. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/qrack_circuit.py +0 -0
  14. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/qrack_neuron.py +0 -0
  15. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/qrack_neuron_torch_layer.py +0 -0
  16. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/qrack_simulator.py +0 -0
  17. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/qrack_stabilizer.py +0 -0
  18. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/qrack_system/__init__.py +0 -0
  19. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/qrack_system/qrack_system.py +0 -0
  20. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/quimb_circuit_type.py +0 -0
  21. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/stats/__init__.py +0 -0
  22. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/stats/load_quantized_data.py +0 -0
  23. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack/stats/quantize_by_range.py +0 -0
  24. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack_cuda.egg-info/SOURCES.txt +0 -0
  25. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack_cuda.egg-info/dependency_links.txt +0 -0
  26. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack_cuda.egg-info/not-zip-safe +0 -0
  27. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack_cuda.egg-info/requires.txt +0 -0
  28. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/pyqrack_cuda.egg-info/top_level.txt +0 -0
  29. {pyqrack_cuda-1.44.29 → pyqrack_cuda-1.44.31}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.44.29
3
+ Version: 1.44.31
4
4
  Summary: pyqrack - Pure Python vm6502q/qrack Wrapper
5
5
  Home-page: https://github.com/vm6502q/pyqrack
6
6
  Author: Daniel Strano
@@ -163,27 +163,50 @@ class QrackAceBackend:
163
163
  single_bit_value = self.sim.prob(hq[single_bit])
164
164
  single_bit_polarization = max(single_bit_value, 1 - single_bit_value)
165
165
  samples = self.sim.measure_shots([hq[other_bits[0]], hq[other_bits[1]]], shots)
166
- syndrome_indices = [other_bits[1], other_bits[0]] if (single_bit_value >= 0.5) else [other_bits[0], other_bits[1]]
166
+ syndrome_indices = (
167
+ [other_bits[1], other_bits[0]]
168
+ if (single_bit_value >= 0.5)
169
+ else [other_bits[0], other_bits[1]]
170
+ )
167
171
  syndrome = [0, 0, 0]
172
+ values = []
168
173
  for sample in samples:
169
174
  match sample:
170
175
  case 0:
171
- syndrome[single_bit] += single_bit_value
176
+ value = single_bit_value
177
+ syndrome[single_bit] += value
172
178
  case 1:
173
- syndrome[syndrome_indices[0]] += single_bit_polarization
179
+ value = single_bit_polarization
180
+ syndrome[syndrome_indices[0]] += value
174
181
  case 2:
175
- syndrome[syndrome_indices[1]] += single_bit_polarization
182
+ value = single_bit_polarization
183
+ syndrome[syndrome_indices[1]] += value
176
184
  case 3:
177
- syndrome[single_bit] += 1 - single_bit_value
185
+ value = 1 - single_bit_value
186
+ syndrome[single_bit] += value
187
+ values.append(value)
178
188
 
179
189
  # Suggestion from Elara (custom OpenAI GPT):
180
- # Assume binomial statistics and compute the standard deviation.
181
- # Only correct if we're outside a confidence interval.
190
+ # Compute the standard deviation and only correct if we're outside a confidence interval.
182
191
  # (This helps avoid limit-point over-correction.)
183
- syndrome_std_dev = (sum(syndrome) - shots / 2) / math.sqrt(shots)
192
+ syndrome_sum = sum(syndrome)
193
+ z_score_numer = syndrome_sum - shots / 2
194
+ z_score = 0
195
+ if z_score_numer > 0:
196
+ syndrome_mean = syndrome_sum / shots
197
+ syndrome_variance = (
198
+ sum((value - syndrome_mean) ** 2 for value in values) / shots
199
+ )
200
+ z_score_denom = math.sqrt(syndrome_variance)
201
+ z_score = (
202
+ math.inf
203
+ if math.isclose(z_score_denom, 0)
204
+ else (z_score_numer / z_score_denom)
205
+ )
206
+
184
207
  force_syndrome = True
185
- # (~68% confidence interval, but this is the margin for average sampling error.)
186
- if syndrome_std_dev > 1:
208
+ # (From Elara, this is the value that minimizes the sum of Type I and Type II error.)
209
+ if z_score >= (497 / 999):
187
210
  # There is an error.
188
211
  error_bit = syndrome.index(max(syndrome))
189
212
  if error_bit == single_bit:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.44.29
3
+ Version: 1.44.31
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.29"
10
+ VERSION = "1.44.31"
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