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

@@ -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,
@@ -445,13 +449,13 @@ class QrackAceBackend:
445
449
 
446
450
  def _get_lhv_bloch_angles(self, sim):
447
451
  # Z axis
448
- z = 1 - 2 * sim.prob(Pauli.PauliZ)
452
+ z = sim.bloch[2]
449
453
 
450
454
  # X axis
451
- x = 1 - 2 * sim.prob(Pauli.PauliX)
455
+ x = sim.bloch[0]
452
456
 
453
457
  # Y axis
454
- y = 1 - 2 * sim.prob(Pauli.PauliY)
458
+ y = sim.bloch[1]
455
459
 
456
460
  inclination = math.atan2(math.sqrt(x**2 + y**2), z)
457
461
  azimuth = math.atan2(y, x)
@@ -483,9 +487,7 @@ class QrackAceBackend:
483
487
 
484
488
  return azimuth, inclination
485
489
 
486
- def _rotate_to_bloch(
487
- self, hq, delta_azimuth, delta_inclination
488
- ):
490
+ def _rotate_to_bloch(self, hq, delta_azimuth, delta_inclination):
489
491
  sim = self.sim[hq[0]]
490
492
  q = hq[1]
491
493
 
@@ -502,10 +504,7 @@ class QrackAceBackend:
502
504
 
503
505
  sim.mtrx([m00, m01, m10, m11], q)
504
506
 
505
-
506
- def _rotate_lhv_to_bloch(
507
- self, sim, delta_azimuth, delta_inclination
508
- ):
507
+ def _rotate_lhv_to_bloch(self, sim, delta_azimuth, delta_inclination):
509
508
  # Apply rotation as "Azimuth, Inclination" (AI)
510
509
  cosA = math.cos(delta_azimuth)
511
510
  sinA = math.sin(delta_azimuth)
@@ -519,7 +518,6 @@ class QrackAceBackend:
519
518
 
520
519
  sim.mtrx([m00, m01, m10, m11])
521
520
 
522
-
523
521
  def _correct(self, lq, phase=False, skip_rotation=False):
524
522
  hq = self._unpack(lq)
525
523
 
@@ -591,12 +589,12 @@ class QrackAceBackend:
591
589
  i_target /= 5
592
590
  for x in range(5):
593
591
  if x == 2:
594
- self._rotate_lhv_to_bloch(hq[x], a_target - a[x], i_target - i[x])
592
+ self._rotate_lhv_to_bloch(
593
+ hq[x], a_target - a[x], i_target - i[x]
594
+ )
595
595
  else:
596
596
  self._rotate_to_bloch(hq[x], a_target - a[x], i_target - i[x])
597
597
 
598
- self.apply_magnetic_bias([lq], self.correction_bias)
599
-
600
598
  else:
601
599
  # RMS
602
600
  p = [
@@ -634,12 +632,12 @@ class QrackAceBackend:
634
632
  i_target /= 3
635
633
  for x in range(3):
636
634
  if x == 2:
637
- self._rotate_lhv_to_bloch(hq[x], a_target - a[x], i_target - i[x])
635
+ self._rotate_lhv_to_bloch(
636
+ hq[x], a_target - a[x], i_target - i[x]
637
+ )
638
638
  else:
639
639
  self._rotate_to_bloch(hq[x], a_target - a[x], i_target - i[x])
640
640
 
641
- self.apply_magnetic_bias([lq], self.correction_bias)
642
-
643
641
  if phase:
644
642
  for q in qb:
645
643
  b = hq[q]
@@ -658,12 +656,16 @@ class QrackAceBackend:
658
656
  if c == 2:
659
657
  a, i = self._get_lhv_bloch_angles(h)
660
658
  self._rotate_lhv_to_bloch(
661
- h, math.atan(math.tan(a) * b) - a, math.atan(math.tan(i) * b) - i
659
+ h,
660
+ math.atan(math.tan(a) * b) - a,
661
+ math.atan(math.tan(i) * b) - i,
662
662
  )
663
663
  else:
664
664
  a, i = self._get_bloch_angles(h)
665
665
  self._rotate_to_bloch(
666
- h, math.atan(math.tan(a) * b) - a, math.atan(math.tan(i) * b) - i
666
+ h,
667
+ math.atan(math.tan(a) * b) - a,
668
+ math.atan(math.tan(i) * b) - i,
667
669
  )
668
670
 
669
671
  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.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=AoJsf3jco3AL76yaGyq9_Krd7RK8CS1mziY4VI1Iq-8,50993
4
+ pyqrack/qrack_ace_backend.py,sha256=1OtQqdcAPXvXMYCsccAsiZfO2kTEy-CAjYQxq3Z1uQQ,50984
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=7BP_ffzbWDrUVCSkyMtEtLN2XZgOCkGo0hkFkgDKEaI,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.0.dist-info/LICENSE,sha256=IdAVedmFOPQtHi_XeEI9OhJwUuwlT6tCJwrT55zAn3w,1090
18
+ pyqrack_cpu-1.64.0.dist-info/METADATA,sha256=wFcC13mnrmpDMpl8zj1aMEUVTkoRDbapyJqusvuR3aU,6035
19
+ pyqrack_cpu-1.64.0.dist-info/WHEEL,sha256=JMWfR_Dj7ISokcwe0cBhCfK6JKnIi-ZX11L6d_ntt6o,98
20
+ pyqrack_cpu-1.64.0.dist-info/top_level.txt,sha256=YE_3q9JTGRLMilNg2tGP1y7uU-Dx8PDao2OhwoIbv8E,8
21
+ pyqrack_cpu-1.64.0.dist-info/RECORD,,