pyqrack-cuda 1.44.26__tar.gz → 1.44.28__tar.gz
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.
- {pyqrack_cuda-1.44.26/pyqrack_cuda.egg-info → pyqrack_cuda-1.44.28}/PKG-INFO +1 -1
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_ace_backend.py +15 -11
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28/pyqrack_cuda.egg-info}/PKG-INFO +1 -1
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/setup.py +1 -1
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/LICENSE +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/MANIFEST.in +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/Makefile +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/README.md +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyproject.toml +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/__init__.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/neuron_activation_fn.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/pauli.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_circuit.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_neuron.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_neuron_torch_layer.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_simulator.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_stabilizer.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_system/__init__.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_system/qrack_system.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/quimb_circuit_type.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/stats/__init__.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/stats/load_quantized_data.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/stats/quantize_by_range.py +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack_cuda.egg-info/SOURCES.txt +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack_cuda.egg-info/dependency_links.txt +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack_cuda.egg-info/not-zip-safe +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack_cuda.egg-info/requires.txt +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack_cuda.egg-info/top_level.txt +0 -0
- {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/setup.cfg +0 -0
@@ -116,14 +116,16 @@ class QrackAceBackend:
|
|
116
116
|
even_row = not (row & 1)
|
117
117
|
if ((not self.alternating_codes) and reverse) or (even_row == reverse):
|
118
118
|
if self._is_init[lq]:
|
119
|
+
# Encode shadow-first
|
119
120
|
self._cx_shadow(hq[0], hq[1])
|
120
121
|
self.sim.mcx([hq[1]], hq[2])
|
121
122
|
else:
|
122
123
|
self.sim.mcx([hq[2]], hq[1])
|
123
124
|
else:
|
124
|
-
self.sim.mcx([hq[0]], hq[1])
|
125
125
|
if self._is_init[lq]:
|
126
|
-
|
126
|
+
# Encode shadow-first
|
127
|
+
self._cx_shadow(hq[0], hq[2])
|
128
|
+
self.sim.mcx([hq[0]], hq[1])
|
127
129
|
self._is_init[lq] = True
|
128
130
|
|
129
131
|
def _decode(self, hq, reverse=False):
|
@@ -133,11 +135,13 @@ class QrackAceBackend:
|
|
133
135
|
row = lq // self.row_length
|
134
136
|
even_row = not (row & 1)
|
135
137
|
if ((not self.alternating_codes) and reverse) or (even_row == reverse):
|
138
|
+
# Decode entangled-first
|
136
139
|
self.sim.mcx([hq[1]], hq[2])
|
137
140
|
self._cx_shadow(hq[0], hq[1])
|
138
141
|
else:
|
139
|
-
|
142
|
+
# Decode entangled-first
|
140
143
|
self.sim.mcx([hq[0]], hq[1])
|
144
|
+
self._cx_shadow(hq[0], hq[2])
|
141
145
|
|
142
146
|
def _correct(self, lq):
|
143
147
|
if not self._is_init[lq]:
|
@@ -146,8 +150,7 @@ class QrackAceBackend:
|
|
146
150
|
# because one of the qubits in the code is separated.
|
147
151
|
# However, we can get pretty close!
|
148
152
|
shots = 1024
|
149
|
-
|
150
|
-
even_row = not (row & 1)
|
153
|
+
even_row = not ((lq // self.row_length) & 1)
|
151
154
|
single_bit = 0
|
152
155
|
other_bits = []
|
153
156
|
if not self.alternating_codes or even_row:
|
@@ -158,25 +161,26 @@ class QrackAceBackend:
|
|
158
161
|
other_bits = [1, 2]
|
159
162
|
hq = self._unpack(lq)
|
160
163
|
single_bit_value = self.sim.prob(hq[single_bit])
|
164
|
+
single_bit_polarization = max(single_bit_value, 1 - single_bit_value)
|
161
165
|
samples = self.sim.measure_shots([hq[other_bits[0]], hq[other_bits[1]]], shots)
|
162
|
-
syndrome = [0, 0, 0]
|
163
166
|
syndrome_indices = [other_bits[1], other_bits[0]] if (single_bit_value >= 0.5) else [other_bits[0], other_bits[1]]
|
167
|
+
syndrome = [0, 0, 0]
|
164
168
|
for sample in samples:
|
165
169
|
match sample:
|
166
170
|
case 0:
|
167
171
|
syndrome[single_bit] += single_bit_value
|
168
172
|
case 1:
|
169
|
-
syndrome[syndrome_indices[0]] +=
|
173
|
+
syndrome[syndrome_indices[0]] += single_bit_polarization
|
170
174
|
case 2:
|
171
|
-
syndrome[syndrome_indices[1]] +=
|
175
|
+
syndrome[syndrome_indices[1]] += single_bit_polarization
|
172
176
|
case 3:
|
173
177
|
syndrome[single_bit] += 1 - single_bit_value
|
174
178
|
|
175
|
-
|
179
|
+
sum_syndrome = sum(syndrome)
|
176
180
|
force_syndrome = True
|
177
|
-
if (2 *
|
181
|
+
if (2 * sum_syndrome) > shots:
|
178
182
|
# There is an error.
|
179
|
-
error_bit = syndrome.index(
|
183
|
+
error_bit = syndrome.index(max(syndrome))
|
180
184
|
if error_bit == single_bit:
|
181
185
|
# The stand-alone bit carries the error.
|
182
186
|
self.sim.x(hq[error_bit])
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|