pyqrack-cpu 1.63.0__py3-none-win_amd64.whl → 1.64.1__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.

@@ -139,6 +139,12 @@ class LHVQubit:
139
139
  new_y = 2 * (rho_prime[0][1].imag - rho_prime[1][0].imag)
140
140
  new_z = 2 * rho_prime[0][0].real - 1 # since Tr(ρ') = 1
141
141
 
142
+ p = math.sqrt(new_x**2 + new_y**2 + new_z**2)
143
+
144
+ new_x /= p
145
+ new_y /= p
146
+ new_z /= p
147
+
142
148
  self.bloch = [new_x, new_y, new_z]
143
149
 
144
150
  def prob(self, basis=Pauli.PauliZ):
@@ -202,7 +208,6 @@ class QrackAceBackend:
202
208
  sim(QrackSimulator): Array of simulators corresponding to "patches" between boundary rows.
203
209
  long_range_columns(int): How many ideal rows between QEC boundary rows?
204
210
  is_transpose(bool): Rows are long if False, columns are long if True
205
- correction_bias(float): Bias magnitude and direction during pseudo-QEC
206
211
  """
207
212
 
208
213
  def __init__(
@@ -211,7 +216,6 @@ class QrackAceBackend:
211
216
  long_range_columns=4,
212
217
  long_range_rows=4,
213
218
  is_transpose=False,
214
- correction_bias=0,
215
219
  isTensorNetwork=False,
216
220
  isSchmidtDecomposeMulti=False,
217
221
  isSchmidtDecompose=True,
@@ -240,7 +244,6 @@ class QrackAceBackend:
240
244
  self.long_range_columns = long_range_columns
241
245
  self.long_range_rows = long_range_rows
242
246
  self.is_transpose = is_transpose
243
- self.correction_bias = correction_bias
244
247
 
245
248
  fppow = 5
246
249
  if "QRACK_FPPOW" in os.environ:
@@ -445,13 +448,13 @@ class QrackAceBackend:
445
448
 
446
449
  def _get_lhv_bloch_angles(self, sim):
447
450
  # Z axis
448
- z = 1 - 2 * sim.prob(Pauli.PauliZ)
451
+ z = sim.bloch[2]
449
452
 
450
453
  # X axis
451
- x = 1 - 2 * sim.prob(Pauli.PauliX)
454
+ x = sim.bloch[0]
452
455
 
453
456
  # Y axis
454
- y = 1 - 2 * sim.prob(Pauli.PauliY)
457
+ y = sim.bloch[1]
455
458
 
456
459
  inclination = math.atan2(math.sqrt(x**2 + y**2), z)
457
460
  azimuth = math.atan2(y, x)
@@ -483,9 +486,7 @@ class QrackAceBackend:
483
486
 
484
487
  return azimuth, inclination
485
488
 
486
- def _rotate_to_bloch(
487
- self, hq, delta_azimuth, delta_inclination
488
- ):
489
+ def _rotate_to_bloch(self, hq, delta_azimuth, delta_inclination):
489
490
  sim = self.sim[hq[0]]
490
491
  q = hq[1]
491
492
 
@@ -502,10 +503,7 @@ class QrackAceBackend:
502
503
 
503
504
  sim.mtrx([m00, m01, m10, m11], q)
504
505
 
505
-
506
- def _rotate_lhv_to_bloch(
507
- self, sim, delta_azimuth, delta_inclination
508
- ):
506
+ def _rotate_lhv_to_bloch(self, sim, delta_azimuth, delta_inclination):
509
507
  # Apply rotation as "Azimuth, Inclination" (AI)
510
508
  cosA = math.cos(delta_azimuth)
511
509
  sinA = math.sin(delta_azimuth)
@@ -519,7 +517,6 @@ class QrackAceBackend:
519
517
 
520
518
  sim.mtrx([m00, m01, m10, m11])
521
519
 
522
-
523
520
  def _correct(self, lq, phase=False, skip_rotation=False):
524
521
  hq = self._unpack(lq)
525
522
 
@@ -591,12 +588,12 @@ class QrackAceBackend:
591
588
  i_target /= 5
592
589
  for x in range(5):
593
590
  if x == 2:
594
- self._rotate_lhv_to_bloch(hq[x], a_target - a[x], i_target - i[x])
591
+ self._rotate_lhv_to_bloch(
592
+ hq[x], a_target - a[x], i_target - i[x]
593
+ )
595
594
  else:
596
595
  self._rotate_to_bloch(hq[x], a_target - a[x], i_target - i[x])
597
596
 
598
- self.apply_magnetic_bias([lq], self.correction_bias)
599
-
600
597
  else:
601
598
  # RMS
602
599
  p = [
@@ -634,12 +631,12 @@ class QrackAceBackend:
634
631
  i_target /= 3
635
632
  for x in range(3):
636
633
  if x == 2:
637
- self._rotate_lhv_to_bloch(hq[x], a_target - a[x], i_target - i[x])
634
+ self._rotate_lhv_to_bloch(
635
+ hq[x], a_target - a[x], i_target - i[x]
636
+ )
638
637
  else:
639
638
  self._rotate_to_bloch(hq[x], a_target - a[x], i_target - i[x])
640
639
 
641
- self.apply_magnetic_bias([lq], self.correction_bias)
642
-
643
640
  if phase:
644
641
  for q in qb:
645
642
  b = hq[q]
@@ -658,12 +655,16 @@ class QrackAceBackend:
658
655
  if c == 2:
659
656
  a, i = self._get_lhv_bloch_angles(h)
660
657
  self._rotate_lhv_to_bloch(
661
- h, math.atan(math.tan(a) * b) - a, math.atan(math.tan(i) * b) - i
658
+ h,
659
+ math.atan(math.tan(a) * b) - a,
660
+ math.atan(math.tan(i) * b) - i,
662
661
  )
663
662
  else:
664
663
  a, i = self._get_bloch_angles(h)
665
664
  self._rotate_to_bloch(
666
- h, math.atan(math.tan(a) * b) - a, math.atan(math.tan(i) * b) - i
665
+ h,
666
+ math.atan(math.tan(a) * b) - a,
667
+ math.atan(math.tan(i) * b) - i,
667
668
  )
668
669
 
669
670
  def u(self, lq, th, ph, lm):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyqrack-cpu
3
- Version: 1.63.0
3
+ Version: 1.64.1
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=AoJsf3jco3AL76yaGyq9_Krd7RK8CS1mziY4VI1Iq-8,50993
4
+ pyqrack/qrack_ace_backend.py,sha256=rBQC9M5FnABOqGVKxtu-YhK8Uzu-CT0P5XGD5dViHzU,50936
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=73m6cDyaE-wY0w4uFqdpngDOMoYJWOnzjitF8mD0Vb4,44281
13
- pyqrack/qrack_system/qrack_lib/qrack_pinvoke.dll,sha256=MJ8ekdBYl-oWL_zqXCUUnqsIC58gVCioaAQXBRu6nHE,1769472
13
+ pyqrack/qrack_system/qrack_lib/qrack_pinvoke.dll,sha256=5180bt5J9DIj8hGU45pctIqvhcMoG3ZPuoZvyc7DdpQ,1769472
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.63.0.dist-info/LICENSE,sha256=IdAVedmFOPQtHi_XeEI9OhJwUuwlT6tCJwrT55zAn3w,1090
18
- pyqrack_cpu-1.63.0.dist-info/METADATA,sha256=MNvWVRIfPETjhLilbWiLcwuN4YXJVmqBkLnAf5txrAU,6035
19
- pyqrack_cpu-1.63.0.dist-info/WHEEL,sha256=JMWfR_Dj7ISokcwe0cBhCfK6JKnIi-ZX11L6d_ntt6o,98
20
- pyqrack_cpu-1.63.0.dist-info/top_level.txt,sha256=YE_3q9JTGRLMilNg2tGP1y7uU-Dx8PDao2OhwoIbv8E,8
21
- pyqrack_cpu-1.63.0.dist-info/RECORD,,
17
+ pyqrack_cpu-1.64.1.dist-info/LICENSE,sha256=IdAVedmFOPQtHi_XeEI9OhJwUuwlT6tCJwrT55zAn3w,1090
18
+ pyqrack_cpu-1.64.1.dist-info/METADATA,sha256=Gf2aIaYgc4piECc1STFZhG7RYXIn_pNdpegCqko6Fmw,6035
19
+ pyqrack_cpu-1.64.1.dist-info/WHEEL,sha256=JMWfR_Dj7ISokcwe0cBhCfK6JKnIi-ZX11L6d_ntt6o,98
20
+ pyqrack_cpu-1.64.1.dist-info/top_level.txt,sha256=YE_3q9JTGRLMilNg2tGP1y7uU-Dx8PDao2OhwoIbv8E,8
21
+ pyqrack_cpu-1.64.1.dist-info/RECORD,,