pyqrack-cpu 1.54.4__py3-none-win_amd64.whl → 1.55.0__py3-none-win_amd64.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.

@@ -30,9 +30,12 @@ except ImportError:
30
30
  # Initial stub and concept produced through conversation with Elara
31
31
  # (the custom OpenAI GPT)
32
32
  class LHVQubit:
33
- def __init__(self):
33
+ def __init__(self, toClone=None):
34
34
  # Initial state in "Bloch vector" terms, defaults to |0⟩
35
- self.reset()
35
+ if toClone:
36
+ self.bloch = toClone.bloch.copy()
37
+ else:
38
+ self.reset()
36
39
 
37
40
  def reset(self):
38
41
  self.bloch = [0.0, 0.0, 1.0]
@@ -46,6 +49,10 @@ class LHVQubit:
46
49
  x, y, z = self.bloch
47
50
  self.bloch = [x, y, -z]
48
51
 
52
+ def y(self):
53
+ x, y, z = self.bloch
54
+ self.bloch = [-x, y, z]
55
+
49
56
  def z(self):
50
57
  x, y, z = self.bloch
51
58
  self.bloch = [x, -y, z]
@@ -159,23 +166,23 @@ class QrackAceBackend:
159
166
  def __init__(
160
167
  self,
161
168
  qubit_count=1,
162
- long_range_columns=-1,
169
+ long_range_columns=2,
163
170
  is_transpose=False,
164
171
  isTensorNetwork=False,
165
172
  isStabilizerHybrid=False,
166
173
  isBinaryDecisionTree=False,
167
174
  toClone=None,
168
175
  ):
169
- if qubit_count < 0:
170
- qubit_count = 0
171
176
  if toClone:
172
177
  qubit_count = toClone.num_qubits()
173
178
  long_range_columns = toClone.long_range_columns
174
179
  is_transpose = toClone.is_transpose
180
+ if qubit_count < 0:
181
+ qubit_count = 0
182
+ if long_range_columns < 0:
183
+ long_range_columns = 0
175
184
 
176
185
  self._factor_width(qubit_count, is_transpose)
177
- if long_range_columns < 0:
178
- long_range_columns = 3 if (self._row_length % 3) == 1 else 2
179
186
  self.long_range_columns = long_range_columns
180
187
  self.is_transpose = is_transpose
181
188
 
@@ -211,7 +218,7 @@ class QrackAceBackend:
211
218
  tot_qubits += 1
212
219
  sim_counts[sim_id] += 1
213
220
 
214
- self._lhv_dict[tot_qubits] = LHVQubit()
221
+ self._lhv_dict[tot_qubits] = LHVQubit(toClone = toClone._lhv_dict[tot_qubits] if toClone else None)
215
222
  tot_qubits += 1
216
223
 
217
224
  sim_id = (sim_id + 1) % sim_count
@@ -235,7 +242,7 @@ class QrackAceBackend:
235
242
 
236
243
  # You can still "monkey-patch" this, after the constructor.
237
244
  if "QRACK_QUNIT_SEPARABILITY_THRESHOLD" not in os.environ:
238
- self.sim[i].set_sdrp(0.03)
245
+ self.sim[i].set_sdrp(0.02375)
239
246
 
240
247
  def clone(self):
241
248
  return QrackAceBackend(toClone=self)
@@ -350,8 +357,10 @@ class QrackAceBackend:
350
357
  self.sim[b[0]].h(b[1])
351
358
 
352
359
  p = [self.sim[hq[0][0]].prob(hq[0][1]), hq[1].prob(), self.sim[hq[2][0]].prob(hq[2][1])]
353
- avg = sum(p) / 3
354
- result = (avg >= 0.5)
360
+ # Balancing suggestion from Elara (the custom OpenAI GPT)
361
+ prms = math.sqrt((p[0] ** 2 + p[1] ** 2 + p[2] ** 2) / 3)
362
+ qrms = math.sqrt(((1 - p[0]) ** 2 + (1 - p[1]) ** 2 + (1 - p[2]) ** 2) / 3)
363
+ result = ((prms + (1 - qrms)) / 2) >= 0.5
355
364
  syndrome = [1 - p[0], 1 - p[1], 1 - p[2]] if result else [p[0], p[1], p[2]]
356
365
 
357
366
  for q in range(3):
@@ -741,10 +750,15 @@ class QrackAceBackend:
741
750
 
742
751
  self._correct(lq)
743
752
  b0 = hq[0]
753
+ b1 = hq[1]
744
754
  b2 = hq[2]
745
- result = (self.sim[b0[0]].prob(b0[1]) + self.sim[b2[0]].prob(b2[1])) / 2
755
+ # RMS
756
+ p = [self.sim[b0[0]].prob(b0[1]), b1.prob(), self.sim[b2[0]].prob(b2[1])]
757
+ # Balancing suggestion from Elara (the custom OpenAI GPT)
758
+ prms = math.sqrt((p[0] ** 2 + p[1] ** 2 + p[2] ** 2) / 3)
759
+ qrms = math.sqrt(((1 - p[0]) ** 2 + (1 - p[1]) ** 2 + (1 - p[2]) ** 2) / 3)
746
760
 
747
- return result
761
+ return (prms + (1 - qrms)) / 2
748
762
 
749
763
  def m(self, lq):
750
764
  hq = self._unpack(lq)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyqrack-cpu
3
- Version: 1.54.4
3
+ Version: 1.55.0
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=9fGCYdEUg_AsENCDRylbrZvUMVbUajRTn3CyuFGuFyM,805
2
2
  pyqrack/neuron_activation_fn.py,sha256=GOqcCkiEB60jCojTrcuHuZMDP5aTOy0adtR8SY_2EZc,614
3
3
  pyqrack/pauli.py,sha256=TUm1SN_HLz3eMW9gD_eg-IYXcMCyr36mYSytq_ExZIU,673
4
- pyqrack/qrack_ace_backend.py,sha256=caaMx29RVQoqcP2M1qZvJwzlD7fxeg4bJk05vpRDGYA,41228
4
+ pyqrack/qrack_ace_backend.py,sha256=kTIo5Q9AByB2aKVw8u2Pi1QYe6N5igIZ4mcUbbg5K6c,41921
5
5
  pyqrack/qrack_circuit.py,sha256=QK2dtPYurdXuw-efVq7lYz40_480NxCejXhOVwBGkXs,20122
6
6
  pyqrack/qrack_neuron.py,sha256=a3F0hduVvXZi9aXsY0du5hBFXpMq_R5UHHDOv2-YtFM,9305
7
7
  pyqrack/qrack_neuron_torch_layer.py,sha256=OhNSldzaqLaMoNBkin68j8QWOOiuZCQJDZPgSDRI2Fk,6330
@@ -10,12 +10,12 @@ pyqrack/qrack_stabilizer.py,sha256=AJe7dfFcxFKyig3tjWXw0UKhXer5Wl9QNvjNNqlOL5M,2
10
10
  pyqrack/quimb_circuit_type.py,sha256=iC0CCpZBGhziFC8-uBCH43Mi29uvVUrtBG6W9YBlyps,638
11
11
  pyqrack/qrack_system/__init__.py,sha256=PUterej-xpA4BqFmiBrQCMeTQlsRf-K8Dxnwp-iVvUQ,343
12
12
  pyqrack/qrack_system/qrack_system.py,sha256=osMGCv3ZEG7QIgd1yDtbGNoBdgvM-l2rW0LA9I3M2VE,44075
13
- pyqrack/qrack_system/qrack_lib/qrack_pinvoke.dll,sha256=t3jyaiZx6lcFOZ75bC04esjLOhD1UTlmKTTzeVUcpAU,1740800
13
+ pyqrack/qrack_system/qrack_lib/qrack_pinvoke.dll,sha256=06r35QSrTFn8oxAHFUKlvdR3hYfdxlCoxJ08wVsxRWo,1740800
14
14
  pyqrack/stats/__init__.py,sha256=hI715MGW7D4mDYhUFpRI4ZLsynYDO4tN-rjsuuYbG6Q,282
15
15
  pyqrack/stats/load_quantized_data.py,sha256=_1w9BPrZNreP0wOAyaAZHdEGKoGiI7tMeFD9P3eyJC0,1219
16
16
  pyqrack/stats/quantize_by_range.py,sha256=0eBIqByIxa4vfm4fQGZLAMGR9y8raxde3e5rvUWJ_dQ,2326
17
- pyqrack_cpu-1.54.4.dist-info/LICENSE,sha256=IdAVedmFOPQtHi_XeEI9OhJwUuwlT6tCJwrT55zAn3w,1090
18
- pyqrack_cpu-1.54.4.dist-info/METADATA,sha256=BEV3jKsSNcvXhYJr0bWuq5IGAtF2vEbQJ1cdwOEBFFI,5994
19
- pyqrack_cpu-1.54.4.dist-info/WHEEL,sha256=JMWfR_Dj7ISokcwe0cBhCfK6JKnIi-ZX11L6d_ntt6o,98
20
- pyqrack_cpu-1.54.4.dist-info/top_level.txt,sha256=YE_3q9JTGRLMilNg2tGP1y7uU-Dx8PDao2OhwoIbv8E,8
21
- pyqrack_cpu-1.54.4.dist-info/RECORD,,
17
+ pyqrack_cpu-1.55.0.dist-info/LICENSE,sha256=IdAVedmFOPQtHi_XeEI9OhJwUuwlT6tCJwrT55zAn3w,1090
18
+ pyqrack_cpu-1.55.0.dist-info/METADATA,sha256=bL49znqHP5Qp5mrMEAV9ro98Cw9Hks3dk_SCTmTky80,5994
19
+ pyqrack_cpu-1.55.0.dist-info/WHEEL,sha256=JMWfR_Dj7ISokcwe0cBhCfK6JKnIi-ZX11L6d_ntt6o,98
20
+ pyqrack_cpu-1.55.0.dist-info/top_level.txt,sha256=YE_3q9JTGRLMilNg2tGP1y7uU-Dx8PDao2OhwoIbv8E,8
21
+ pyqrack_cpu-1.55.0.dist-info/RECORD,,