pyqrack-cpu 1.44.30__py3-none-macosx_13_0_x86_64.whl → 1.44.32__py3-none-macosx_13_0_x86_64.whl

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.

Potentially problematic release.


This version of pyqrack-cpu might be problematic. Click here for more details.

@@ -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 modified 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_dev = (sum(syndrome) - shots / 2) / (math.sqrt(shots) * abs(single_bit_polarization - 0.5))
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_component_mean = syndrome_sum / shots
197
+ syndrome_total_variance = sum(
198
+ (value - syndrome_component_mean) ** 2 for value in values
199
+ )
200
+ z_score_denom = math.sqrt(syndrome_total_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
208
  # (From Elara, this is the value that minimizes the sum of Type I and Type II error.)
186
- if syndrome_dev > (497/999):
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.1
2
2
  Name: pyqrack-cpu
3
- Version: 1.44.30
3
+ Version: 1.44.32
4
4
  Summary: pyqrack - Pure Python vm6502q/qrack Wrapper
5
5
  Home-page: https://github.com/vm6502q/pyqrack
6
6
  Author: Daniel Strano
@@ -1,7 +1,7 @@
1
1
  pyqrack/__init__.py,sha256=3tBwfCCD-zQjQ2g1EUZdggKdn-3b2uSFTbT7LS0YLaU,785
2
2
  pyqrack/neuron_activation_fn.py,sha256=fQTTFfsvwcot_43Vopacot47IV2Rxk8pelUyuzwpXPs,593
3
3
  pyqrack/pauli.py,sha256=wg500wDOwdIU4lEVJoMmjtbAdmtakZYzLPjdzC2rwUQ,654
4
- pyqrack/qrack_ace_backend.py,sha256=GV-x5mfdE3TVvt3Z4yh59IspH_89Al_0Xx1K0vKmG0Q,25723
4
+ pyqrack/qrack_ace_backend.py,sha256=o7DvdDjTSqfTST1Jone7ic9RZDv9rHT41AM0OAisgFk,26359
5
5
  pyqrack/qrack_circuit.py,sha256=vDCKGbcEHJDFUKprjCpWgit8lXFnMrPimKHURD2_Hj4,19538
6
6
  pyqrack/qrack_neuron.py,sha256=UiJdjAGB6usjAGHWSosSFCUUeIkhh3MtZbsaxfsIsNw,9043
7
7
  pyqrack/qrack_neuron_torch_layer.py,sha256=Bs5BLC2GFevfSpo_jSJ2AZl-hfDRJmzlGN9pFw1CtoQ,6160
@@ -15,8 +15,8 @@ pyqrack/qrack_system/qrack_lib/libqrack_pinvoke.dylib,sha256=NLHKAGCm7kTcBYwymd1
15
15
  pyqrack/stats/__init__.py,sha256=Hla85my2fY_roR9lIjGBVpEG7ySOTMwjWa8D6-kgCnY,276
16
16
  pyqrack/stats/load_quantized_data.py,sha256=z12u9F7Nt3P-i44nY1xxvso_klS6WIHS3iqq7R2_lqE,1184
17
17
  pyqrack/stats/quantize_by_range.py,sha256=UM0_7jJDdQ7g30cR3UQAxkbzkqrmsy1oUfqg0h11FUY,2270
18
- pyqrack_cpu-1.44.30.dist-info/LICENSE,sha256=HxB-7SaWTuewAk1nz-3_3FUD6QhgX73kNT_taKVUTq8,1069
19
- pyqrack_cpu-1.44.30.dist-info/METADATA,sha256=_DVutVmPIHlXQ6kAMvfwFAddg25WvY7DbFdS_pH1JkU,6473
20
- pyqrack_cpu-1.44.30.dist-info/WHEEL,sha256=nZx8s83OrgdDmpcWX-8FgI0sEAjdQimt4SdYsdcCaC8,107
21
- pyqrack_cpu-1.44.30.dist-info/top_level.txt,sha256=YE_3q9JTGRLMilNg2tGP1y7uU-Dx8PDao2OhwoIbv8E,8
22
- pyqrack_cpu-1.44.30.dist-info/RECORD,,
18
+ pyqrack_cpu-1.44.32.dist-info/LICENSE,sha256=HxB-7SaWTuewAk1nz-3_3FUD6QhgX73kNT_taKVUTq8,1069
19
+ pyqrack_cpu-1.44.32.dist-info/METADATA,sha256=OtWXNX47P3hM4OuQjM_M96MTv1xHg7XzW9FMU5NHFEw,6473
20
+ pyqrack_cpu-1.44.32.dist-info/WHEEL,sha256=nZx8s83OrgdDmpcWX-8FgI0sEAjdQimt4SdYsdcCaC8,107
21
+ pyqrack_cpu-1.44.32.dist-info/top_level.txt,sha256=YE_3q9JTGRLMilNg2tGP1y7uU-Dx8PDao2OhwoIbv8E,8
22
+ pyqrack_cpu-1.44.32.dist-info/RECORD,,