pyqrack-cpu 1.63.0__py3-none-manylinux_2_35_x86_64.whl → 1.64.0__py3-none-manylinux_2_35_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.
- pyqrack/qrack_ace_backend.py +23 -21
- {pyqrack_cpu-1.63.0.dist-info → pyqrack_cpu-1.64.0.dist-info}/METADATA +1 -1
- {pyqrack_cpu-1.63.0.dist-info → pyqrack_cpu-1.64.0.dist-info}/RECORD +6 -6
- {pyqrack_cpu-1.63.0.dist-info → pyqrack_cpu-1.64.0.dist-info}/LICENSE +0 -0
- {pyqrack_cpu-1.63.0.dist-info → pyqrack_cpu-1.64.0.dist-info}/WHEEL +0 -0
- {pyqrack_cpu-1.63.0.dist-info → pyqrack_cpu-1.64.0.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,
|
|
@@ -445,13 +449,13 @@ class QrackAceBackend:
|
|
|
445
449
|
|
|
446
450
|
def _get_lhv_bloch_angles(self, sim):
|
|
447
451
|
# Z axis
|
|
448
|
-
z =
|
|
452
|
+
z = sim.bloch[2]
|
|
449
453
|
|
|
450
454
|
# X axis
|
|
451
|
-
x =
|
|
455
|
+
x = sim.bloch[0]
|
|
452
456
|
|
|
453
457
|
# Y axis
|
|
454
|
-
y =
|
|
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(
|
|
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(
|
|
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,
|
|
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,
|
|
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,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=
|
|
4
|
+
pyqrack/qrack_ace_backend.py,sha256=9p90dJXqFwc-hjclIexXZzNv-zYTWyg6vk9qYMjifXY,49439
|
|
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
|
|
@@ -16,8 +16,8 @@ pyqrack/qrack_system/qrack_lib/libqrack_pinvoke.so.9.22.0,sha256=uFHqafF8aaXe5tH
|
|
|
16
16
|
pyqrack/stats/__init__.py,sha256=Hla85my2fY_roR9lIjGBVpEG7ySOTMwjWa8D6-kgCnY,276
|
|
17
17
|
pyqrack/stats/load_quantized_data.py,sha256=z12u9F7Nt3P-i44nY1xxvso_klS6WIHS3iqq7R2_lqE,1184
|
|
18
18
|
pyqrack/stats/quantize_by_range.py,sha256=UM0_7jJDdQ7g30cR3UQAxkbzkqrmsy1oUfqg0h11FUY,2270
|
|
19
|
-
pyqrack_cpu-1.
|
|
20
|
-
pyqrack_cpu-1.
|
|
21
|
-
pyqrack_cpu-1.
|
|
22
|
-
pyqrack_cpu-1.
|
|
23
|
-
pyqrack_cpu-1.
|
|
19
|
+
pyqrack_cpu-1.64.0.dist-info/LICENSE,sha256=HxB-7SaWTuewAk1nz-3_3FUD6QhgX73kNT_taKVUTq8,1069
|
|
20
|
+
pyqrack_cpu-1.64.0.dist-info/METADATA,sha256=QyekUucHm8nlPEFmdeSqh0ciaU8wodx9HVp9w8K9SWM,5971
|
|
21
|
+
pyqrack_cpu-1.64.0.dist-info/WHEEL,sha256=AMMNaGlKLEICDqgnxZojk7k8N6wUjQQ3X9tPjxJ2sOc,110
|
|
22
|
+
pyqrack_cpu-1.64.0.dist-info/top_level.txt,sha256=YE_3q9JTGRLMilNg2tGP1y7uU-Dx8PDao2OhwoIbv8E,8
|
|
23
|
+
pyqrack_cpu-1.64.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|