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.
- pyqrack/qrack_ace_backend.py +23 -22
- pyqrack/qrack_system/qrack_lib/qrack_pinvoke.dll +0 -0
- {pyqrack_cpu-1.63.0.dist-info → pyqrack_cpu-1.64.1.dist-info}/METADATA +1 -1
- {pyqrack_cpu-1.63.0.dist-info → pyqrack_cpu-1.64.1.dist-info}/RECORD +7 -7
- {pyqrack_cpu-1.63.0.dist-info → pyqrack_cpu-1.64.1.dist-info}/LICENSE +0 -0
- {pyqrack_cpu-1.63.0.dist-info → pyqrack_cpu-1.64.1.dist-info}/WHEEL +0 -0
- {pyqrack_cpu-1.63.0.dist-info → pyqrack_cpu-1.64.1.dist-info}/top_level.txt +0 -0
pyqrack/qrack_ace_backend.py
CHANGED
|
@@ -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 =
|
|
451
|
+
z = sim.bloch[2]
|
|
449
452
|
|
|
450
453
|
# X axis
|
|
451
|
-
x =
|
|
454
|
+
x = sim.bloch[0]
|
|
452
455
|
|
|
453
456
|
# Y axis
|
|
454
|
-
y =
|
|
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(
|
|
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(
|
|
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,
|
|
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,
|
|
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):
|
|
Binary file
|
|
@@ -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=
|
|
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=
|
|
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.
|
|
18
|
-
pyqrack_cpu-1.
|
|
19
|
-
pyqrack_cpu-1.
|
|
20
|
-
pyqrack_cpu-1.
|
|
21
|
-
pyqrack_cpu-1.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|