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.
Files changed (29) hide show
  1. {pyqrack_cuda-1.44.26/pyqrack_cuda.egg-info → pyqrack_cuda-1.44.28}/PKG-INFO +1 -1
  2. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_ace_backend.py +15 -11
  3. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28/pyqrack_cuda.egg-info}/PKG-INFO +1 -1
  4. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/setup.py +1 -1
  5. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/LICENSE +0 -0
  6. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/MANIFEST.in +0 -0
  7. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/Makefile +0 -0
  8. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/README.md +0 -0
  9. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyproject.toml +0 -0
  10. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/__init__.py +0 -0
  11. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/neuron_activation_fn.py +0 -0
  12. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/pauli.py +0 -0
  13. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_circuit.py +0 -0
  14. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_neuron.py +0 -0
  15. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_neuron_torch_layer.py +0 -0
  16. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_simulator.py +0 -0
  17. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_stabilizer.py +0 -0
  18. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_system/__init__.py +0 -0
  19. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/qrack_system/qrack_system.py +0 -0
  20. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/quimb_circuit_type.py +0 -0
  21. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/stats/__init__.py +0 -0
  22. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/stats/load_quantized_data.py +0 -0
  23. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack/stats/quantize_by_range.py +0 -0
  24. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack_cuda.egg-info/SOURCES.txt +0 -0
  25. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack_cuda.egg-info/dependency_links.txt +0 -0
  26. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack_cuda.egg-info/not-zip-safe +0 -0
  27. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack_cuda.egg-info/requires.txt +0 -0
  28. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/pyqrack_cuda.egg-info/top_level.txt +0 -0
  29. {pyqrack_cuda-1.44.26 → pyqrack_cuda-1.44.28}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.44.26
3
+ Version: 1.44.28
4
4
  Summary: pyqrack - Pure Python vm6502q/qrack Wrapper
5
5
  Home-page: https://github.com/vm6502q/pyqrack
6
6
  Author: Daniel Strano
@@ -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
- self._cx_shadow(hq[1], hq[2])
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
- self._cx_shadow(hq[1], hq[2])
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
- row = lq // self.row_length
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]] += 1
173
+ syndrome[syndrome_indices[0]] += single_bit_polarization
170
174
  case 2:
171
- syndrome[syndrome_indices[1]] += 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
- max_syndrome = max(syndrome)
179
+ sum_syndrome = sum(syndrome)
176
180
  force_syndrome = True
177
- if (2 * max_syndrome) > shots:
181
+ if (2 * sum_syndrome) > shots:
178
182
  # There is an error.
179
- error_bit = syndrome.index(max_syndrome)
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])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyqrack-cuda
3
- Version: 1.44.26
3
+ Version: 1.44.28
4
4
  Summary: pyqrack - Pure Python vm6502q/qrack Wrapper
5
5
  Home-page: https://github.com/vm6502q/pyqrack
6
6
  Author: Daniel Strano
@@ -7,7 +7,7 @@ from setuptools import setup
7
7
  from setuptools.command.build_py import build_py
8
8
 
9
9
 
10
- VERSION = "1.44.26"
10
+ VERSION = "1.44.28"
11
11
 
12
12
  # Read long description from README.
13
13
  README_PATH = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'README.md')
File without changes
File without changes
File without changes
File without changes