pyqrack 1.29.0__py3-none-win_amd64.whl → 1.72.5__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.
- pyqrack/__init__.py +13 -6
- pyqrack/neuron_activation_fn.py +2 -2
- pyqrack/pauli.py +1 -1
- pyqrack/qrack_ace_backend.py +1544 -0
- pyqrack/qrack_circuit.py +212 -100
- pyqrack/qrack_neuron.py +27 -9
- pyqrack/qrack_neuron_torch_layer.py +170 -0
- pyqrack/qrack_simulator.py +870 -310
- pyqrack/qrack_stabilizer.py +58 -0
- pyqrack/qrack_system/qrack_cl_precompile/qrack_cl_precompile.exe +0 -0
- pyqrack/qrack_system/qrack_lib/qrack_pinvoke.dll +0 -0
- pyqrack/qrack_system/qrack_system.py +228 -135
- pyqrack/quimb_circuit_type.py +1 -1
- pyqrack/stats/__init__.py +6 -0
- pyqrack/stats/load_quantized_data.py +35 -0
- pyqrack/stats/quantize_by_range.py +56 -0
- {pyqrack-1.29.0.dist-info → pyqrack-1.72.5.dist-info}/LICENSE +1 -1
- pyqrack-1.72.5.dist-info/METADATA +82 -0
- pyqrack-1.72.5.dist-info/RECORD +22 -0
- {pyqrack-1.29.0.dist-info → pyqrack-1.72.5.dist-info}/WHEEL +1 -1
- pyqrack/util/__init__.py +0 -8
- pyqrack/util/convert_qiskit_circuit_to_qasm_experiment.py +0 -61
- pyqrack-1.29.0.dist-info/METADATA +0 -61
- pyqrack-1.29.0.dist-info/RECORD +0 -17
- {pyqrack-1.29.0.dist-info → pyqrack-1.72.5.dist-info}/top_level.txt +0 -0
|
@@ -16,48 +16,59 @@
|
|
|
16
16
|
# found in the LICENSE file or at https://opensource.org/licenses/MIT.
|
|
17
17
|
|
|
18
18
|
import os
|
|
19
|
-
import pathlib
|
|
20
19
|
from ctypes import *
|
|
21
20
|
from sys import platform as _platform
|
|
22
21
|
|
|
23
22
|
|
|
24
23
|
class QrackSystem:
|
|
25
24
|
def __init__(self):
|
|
26
|
-
|
|
27
|
-
if os.environ.get(
|
|
28
|
-
shared_lib_path = os.environ.get(
|
|
25
|
+
shared_lib_path = ""
|
|
26
|
+
if os.environ.get("PYQRACK_SHARED_LIB_PATH") != None:
|
|
27
|
+
shared_lib_path = os.environ.get("PYQRACK_SHARED_LIB_PATH")
|
|
29
28
|
elif _platform == "win32":
|
|
30
|
-
shared_lib_path =
|
|
29
|
+
shared_lib_path = os.path.dirname(__file__) + "/qrack_lib/qrack_pinvoke.dll"
|
|
31
30
|
elif _platform == "darwin":
|
|
32
|
-
shared_lib_path =
|
|
31
|
+
shared_lib_path = (
|
|
32
|
+
os.path.dirname(__file__) + "/qrack_lib/libqrack_pinvoke.dylib"
|
|
33
|
+
)
|
|
33
34
|
else:
|
|
34
|
-
shared_lib_path =
|
|
35
|
+
shared_lib_path = (
|
|
36
|
+
os.path.dirname(__file__) + "/qrack_lib/libqrack_pinvoke.so"
|
|
37
|
+
)
|
|
35
38
|
|
|
36
39
|
try:
|
|
37
40
|
self.qrack_lib = CDLL(shared_lib_path)
|
|
38
41
|
except Exception as e:
|
|
42
|
+
if _platform == "win32":
|
|
43
|
+
shared_lib_path = "C:/Program Files (x86)/Qrack/bin/qrack_pinvoke.dll"
|
|
44
|
+
elif _platform == "darwin":
|
|
45
|
+
shared_lib_path = "/usr/local/lib/qrack/libqrack_pinvoke.dylib"
|
|
46
|
+
else:
|
|
47
|
+
shared_lib_path = "/usr/local/lib/qrack/libqrack_pinvoke.so"
|
|
48
|
+
|
|
39
49
|
try:
|
|
50
|
+
self.qrack_lib = CDLL(shared_lib_path)
|
|
51
|
+
except Exception as e:
|
|
40
52
|
if _platform == "win32":
|
|
41
|
-
shared_lib_path =
|
|
53
|
+
shared_lib_path = (
|
|
54
|
+
"C:/Program Files (x86)/Qrack/bin/qrack_pinvoke.dll"
|
|
55
|
+
)
|
|
42
56
|
elif _platform == "darwin":
|
|
43
|
-
shared_lib_path = "/usr/
|
|
57
|
+
shared_lib_path = "/usr/lib/qrack/libqrack_pinvoke.dylib"
|
|
44
58
|
else:
|
|
45
|
-
shared_lib_path = "/usr/
|
|
46
|
-
|
|
47
|
-
except Exception as e:
|
|
59
|
+
shared_lib_path = "/usr/lib/qrack/libqrack_pinvoke.so"
|
|
60
|
+
|
|
48
61
|
try:
|
|
49
|
-
|
|
50
|
-
raise e
|
|
51
|
-
elif _platform == "darwin":
|
|
52
|
-
shared_lib_path = "/usr/lib/qrack/libqrack_pinvoke.dylib"
|
|
53
|
-
else:
|
|
54
|
-
shared_lib_path = "/usr/lib/qrack/libqrack_pinvoke.so"
|
|
62
|
+
self.qrack_lib = CDLL(shared_lib_path)
|
|
55
63
|
except Exception as e:
|
|
56
|
-
print(
|
|
64
|
+
print(
|
|
65
|
+
"IMPORTANT: Did you remember to install OpenCL, if your Qrack version was built with OpenCL?"
|
|
66
|
+
)
|
|
67
|
+
raise e
|
|
57
68
|
|
|
58
69
|
self.fppow = 5
|
|
59
70
|
if "QRACK_FPPOW" in os.environ:
|
|
60
|
-
self.fppow = int(os.environ.get(
|
|
71
|
+
self.fppow = int(os.environ.get("QRACK_FPPOW"))
|
|
61
72
|
if self.fppow < 4 or self.fppow > 7:
|
|
62
73
|
raise ValueError(
|
|
63
74
|
"QRACK_FPPOW environment variable must be an integer >3 and <8. (Qrack builds from 4 for fp16/half, up to 7 for fp128/quad."
|
|
@@ -73,19 +84,25 @@ class QrackSystem:
|
|
|
73
84
|
self.qrack_lib.Dump.restype = None
|
|
74
85
|
self.qrack_lib.Dump.argtypes = [
|
|
75
86
|
c_ulonglong,
|
|
76
|
-
CFUNCTYPE(c_ulonglong, c_double, c_double)
|
|
87
|
+
CFUNCTYPE(c_ulonglong, c_double, c_double),
|
|
77
88
|
]
|
|
78
89
|
|
|
79
|
-
# These next
|
|
90
|
+
# These next few methods need to have c_double pointers, if PyQrack is built with fp64.
|
|
80
91
|
self.qrack_lib.InKet.restype = None
|
|
81
92
|
self.qrack_lib.OutKet.restype = None
|
|
93
|
+
self.qrack_lib.OutProbs.restype = None
|
|
94
|
+
self.qrack_lib.OutReducedDensityMatrix.restype = None
|
|
82
95
|
|
|
83
96
|
if self.fppow < 6:
|
|
84
97
|
self.qrack_lib.InKet.argtypes = [c_ulonglong, POINTER(c_float)]
|
|
85
98
|
self.qrack_lib.OutKet.argtypes = [c_ulonglong, POINTER(c_float)]
|
|
99
|
+
self.qrack_lib.OutProbs.argtypes = [c_ulonglong, POINTER(c_float)]
|
|
100
|
+
self.qrack_lib.OutReducedDensityMatrix.argtypes = [c_ulonglong, c_ulonglong, POINTER(c_ulonglong), POINTER(c_float)]
|
|
86
101
|
else:
|
|
87
102
|
self.qrack_lib.InKet.argtypes = [c_ulonglong, POINTER(c_double)]
|
|
88
103
|
self.qrack_lib.OutKet.argtypes = [c_ulonglong, POINTER(c_double)]
|
|
104
|
+
self.qrack_lib.OutProbs.argtypes = [c_ulonglong, POINTER(c_double)]
|
|
105
|
+
self.qrack_lib.OutReducedDensityMatrix.argtypes = [c_ulonglong, c_ulonglong, POINTER(c_ulonglong), POINTER(c_double)]
|
|
89
106
|
|
|
90
107
|
self.qrack_lib.init.restype = c_ulonglong
|
|
91
108
|
self.qrack_lib.init.argtypes = []
|
|
@@ -94,10 +111,10 @@ class QrackSystem:
|
|
|
94
111
|
self.qrack_lib.get_error.argtypes = [c_ulonglong]
|
|
95
112
|
|
|
96
113
|
self.qrack_lib.init_count.restype = c_ulonglong
|
|
97
|
-
self.qrack_lib.init_count.argtypes = [c_ulonglong, c_bool]
|
|
114
|
+
self.qrack_lib.init_count.argtypes = [c_ulonglong, c_bool, c_bool]
|
|
98
115
|
|
|
99
116
|
self.qrack_lib.init_count_pager.restype = c_ulonglong
|
|
100
|
-
self.qrack_lib.init_count_pager.argtypes = [c_ulonglong, c_bool]
|
|
117
|
+
self.qrack_lib.init_count_pager.argtypes = [c_ulonglong, c_bool, c_bool]
|
|
101
118
|
|
|
102
119
|
self.qrack_lib.init_count_type.restype = c_ulonglong
|
|
103
120
|
self.qrack_lib.init_count_type.argtypes = [
|
|
@@ -111,9 +128,13 @@ class QrackSystem:
|
|
|
111
128
|
c_bool,
|
|
112
129
|
c_bool,
|
|
113
130
|
c_bool,
|
|
131
|
+
c_bool,
|
|
114
132
|
c_bool
|
|
115
133
|
]
|
|
116
134
|
|
|
135
|
+
self.qrack_lib.init_count_stabilizer.restype = c_ulonglong
|
|
136
|
+
self.qrack_lib.init_count_stabilizer.argtypes = [c_ulonglong]
|
|
137
|
+
|
|
117
138
|
self.qrack_lib.init_clone.restype = c_ulonglong
|
|
118
139
|
self.qrack_lib.init_clone.argtypes = [c_ulonglong]
|
|
119
140
|
|
|
@@ -126,22 +147,38 @@ class QrackSystem:
|
|
|
126
147
|
self.qrack_lib.set_concurrency.restype = None
|
|
127
148
|
self.qrack_lib.set_concurrency.argtypes = [c_ulonglong, c_ulonglong]
|
|
128
149
|
|
|
150
|
+
self.qrack_lib.set_device.restype = None
|
|
151
|
+
self.qrack_lib.set_device.argtypes = [c_ulonglong, c_longlong]
|
|
152
|
+
|
|
153
|
+
self.qrack_lib.set_device_list.restype = None
|
|
154
|
+
self.qrack_lib.set_device_list.argtypes = [
|
|
155
|
+
c_ulonglong,
|
|
156
|
+
c_ulonglong,
|
|
157
|
+
POINTER(c_longlong),
|
|
158
|
+
]
|
|
159
|
+
|
|
129
160
|
# pseudo-quantum
|
|
130
161
|
|
|
162
|
+
self.qrack_lib.HighestProbAll.restype = None
|
|
163
|
+
self.qrack_lib.HighestProbAll.argtypes = [c_ulonglong, POINTER(c_ulonglong)]
|
|
164
|
+
|
|
165
|
+
self.qrack_lib.HighestProbAllN.restype = None
|
|
166
|
+
self.qrack_lib.HighestProbAllN.argtypes = [c_ulonglong, c_ulonglong, POINTER(c_ulonglong)]
|
|
167
|
+
|
|
131
168
|
self.qrack_lib.ProbAll.restype = None
|
|
132
169
|
if self.fppow == 5:
|
|
133
170
|
self.qrack_lib.ProbAll.argtypes = [
|
|
134
171
|
c_ulonglong,
|
|
135
172
|
c_ulonglong,
|
|
136
173
|
POINTER(c_ulonglong),
|
|
137
|
-
POINTER(c_float)
|
|
174
|
+
POINTER(c_float),
|
|
138
175
|
]
|
|
139
176
|
elif self.fppow == 6:
|
|
140
177
|
self.qrack_lib.ProbAll.argtypes = [
|
|
141
178
|
c_ulonglong,
|
|
142
179
|
c_ulonglong,
|
|
143
180
|
POINTER(c_ulonglong),
|
|
144
|
-
POINTER(c_double)
|
|
181
|
+
POINTER(c_double),
|
|
145
182
|
]
|
|
146
183
|
|
|
147
184
|
self.qrack_lib.Prob.restype = c_double
|
|
@@ -155,7 +192,7 @@ class QrackSystem:
|
|
|
155
192
|
c_ulonglong,
|
|
156
193
|
c_ulonglong,
|
|
157
194
|
POINTER(c_ulonglong),
|
|
158
|
-
POINTER(c_bool)
|
|
195
|
+
POINTER(c_bool),
|
|
159
196
|
]
|
|
160
197
|
|
|
161
198
|
self.qrack_lib.PermutationProbRdm.restype = c_double
|
|
@@ -164,14 +201,14 @@ class QrackSystem:
|
|
|
164
201
|
c_ulonglong,
|
|
165
202
|
POINTER(c_ulonglong),
|
|
166
203
|
POINTER(c_bool),
|
|
167
|
-
c_bool
|
|
204
|
+
c_bool,
|
|
168
205
|
]
|
|
169
206
|
|
|
170
207
|
self.qrack_lib.PermutationExpectation.restype = c_double
|
|
171
208
|
self.qrack_lib.PermutationExpectation.argtypes = [
|
|
172
209
|
c_ulonglong,
|
|
173
210
|
c_ulonglong,
|
|
174
|
-
POINTER(c_ulonglong)
|
|
211
|
+
POINTER(c_ulonglong),
|
|
175
212
|
]
|
|
176
213
|
|
|
177
214
|
self.qrack_lib.PermutationExpectationRdm.restype = c_double
|
|
@@ -179,7 +216,7 @@ class QrackSystem:
|
|
|
179
216
|
c_ulonglong,
|
|
180
217
|
c_ulonglong,
|
|
181
218
|
POINTER(c_ulonglong),
|
|
182
|
-
c_bool
|
|
219
|
+
c_bool,
|
|
183
220
|
]
|
|
184
221
|
|
|
185
222
|
self.qrack_lib.FactorizedExpectation.restype = c_double
|
|
@@ -188,7 +225,7 @@ class QrackSystem:
|
|
|
188
225
|
c_ulonglong,
|
|
189
226
|
POINTER(c_ulonglong),
|
|
190
227
|
c_ulonglong,
|
|
191
|
-
POINTER(c_ulonglong)
|
|
228
|
+
POINTER(c_ulonglong),
|
|
192
229
|
]
|
|
193
230
|
|
|
194
231
|
self.qrack_lib.FactorizedExpectationRdm.restype = c_double
|
|
@@ -198,7 +235,7 @@ class QrackSystem:
|
|
|
198
235
|
POINTER(c_ulonglong),
|
|
199
236
|
c_ulonglong,
|
|
200
237
|
POINTER(c_ulonglong),
|
|
201
|
-
c_bool
|
|
238
|
+
c_bool,
|
|
202
239
|
]
|
|
203
240
|
|
|
204
241
|
if self.fppow == 5:
|
|
@@ -207,7 +244,7 @@ class QrackSystem:
|
|
|
207
244
|
c_ulonglong,
|
|
208
245
|
c_ulonglong,
|
|
209
246
|
POINTER(c_ulonglong),
|
|
210
|
-
POINTER(c_float)
|
|
247
|
+
POINTER(c_float),
|
|
211
248
|
]
|
|
212
249
|
self.qrack_lib.FactorizedExpectationFpRdm.restype = c_double
|
|
213
250
|
self.qrack_lib.FactorizedExpectationFpRdm.argtypes = [
|
|
@@ -215,21 +252,21 @@ class QrackSystem:
|
|
|
215
252
|
c_ulonglong,
|
|
216
253
|
POINTER(c_ulonglong),
|
|
217
254
|
POINTER(c_float),
|
|
218
|
-
c_bool
|
|
255
|
+
c_bool,
|
|
219
256
|
]
|
|
220
257
|
self.qrack_lib.UnitaryExpectation.restype = c_double
|
|
221
258
|
self.qrack_lib.UnitaryExpectation.argtypes = [
|
|
222
259
|
c_ulonglong,
|
|
223
260
|
c_ulonglong,
|
|
224
261
|
POINTER(c_ulonglong),
|
|
225
|
-
POINTER(c_float)
|
|
262
|
+
POINTER(c_float),
|
|
226
263
|
]
|
|
227
264
|
self.qrack_lib.MatrixExpectation.restype = c_double
|
|
228
265
|
self.qrack_lib.MatrixExpectation.argtypes = [
|
|
229
266
|
c_ulonglong,
|
|
230
267
|
c_ulonglong,
|
|
231
268
|
POINTER(c_ulonglong),
|
|
232
|
-
POINTER(c_float)
|
|
269
|
+
POINTER(c_float),
|
|
233
270
|
]
|
|
234
271
|
self.qrack_lib.UnitaryExpectationEigenVal.restype = c_double
|
|
235
272
|
self.qrack_lib.UnitaryExpectationEigenVal.argtypes = [
|
|
@@ -237,7 +274,7 @@ class QrackSystem:
|
|
|
237
274
|
c_ulonglong,
|
|
238
275
|
POINTER(c_ulonglong),
|
|
239
276
|
POINTER(c_float),
|
|
240
|
-
POINTER(c_float)
|
|
277
|
+
POINTER(c_float),
|
|
241
278
|
]
|
|
242
279
|
self.qrack_lib.MatrixExpectationEigenVal.restype = c_double
|
|
243
280
|
self.qrack_lib.MatrixExpectationEigenVal.argtypes = [
|
|
@@ -245,7 +282,7 @@ class QrackSystem:
|
|
|
245
282
|
c_ulonglong,
|
|
246
283
|
POINTER(c_ulonglong),
|
|
247
284
|
POINTER(c_float),
|
|
248
|
-
POINTER(c_float)
|
|
285
|
+
POINTER(c_float),
|
|
249
286
|
]
|
|
250
287
|
elif self.fppow == 6:
|
|
251
288
|
self.qrack_lib.FactorizedExpectationFp.restype = c_double
|
|
@@ -253,7 +290,7 @@ class QrackSystem:
|
|
|
253
290
|
c_ulonglong,
|
|
254
291
|
c_ulonglong,
|
|
255
292
|
POINTER(c_ulonglong),
|
|
256
|
-
POINTER(c_double)
|
|
293
|
+
POINTER(c_double),
|
|
257
294
|
]
|
|
258
295
|
self.qrack_lib.FactorizedExpectationFpRdm.restype = c_double
|
|
259
296
|
self.qrack_lib.FactorizedExpectationFpRdm.argtypes = [
|
|
@@ -261,21 +298,21 @@ class QrackSystem:
|
|
|
261
298
|
c_ulonglong,
|
|
262
299
|
POINTER(c_ulonglong),
|
|
263
300
|
POINTER(c_double),
|
|
264
|
-
c_bool
|
|
301
|
+
c_bool,
|
|
265
302
|
]
|
|
266
303
|
self.qrack_lib.UnitaryExpectation.restype = c_double
|
|
267
304
|
self.qrack_lib.UnitaryExpectation.argtypes = [
|
|
268
305
|
c_ulonglong,
|
|
269
306
|
c_ulonglong,
|
|
270
307
|
POINTER(c_ulonglong),
|
|
271
|
-
POINTER(c_double)
|
|
308
|
+
POINTER(c_double),
|
|
272
309
|
]
|
|
273
310
|
self.qrack_lib.MatrixExpectation.restype = c_double
|
|
274
311
|
self.qrack_lib.MatrixExpectation.argtypes = [
|
|
275
312
|
c_ulonglong,
|
|
276
313
|
c_ulonglong,
|
|
277
314
|
POINTER(c_ulonglong),
|
|
278
|
-
POINTER(c_double)
|
|
315
|
+
POINTER(c_double),
|
|
279
316
|
]
|
|
280
317
|
self.qrack_lib.UnitaryExpectationEigenVal.restype = c_double
|
|
281
318
|
self.qrack_lib.UnitaryExpectationEigenVal.argtypes = [
|
|
@@ -283,7 +320,7 @@ class QrackSystem:
|
|
|
283
320
|
c_ulonglong,
|
|
284
321
|
POINTER(c_ulonglong),
|
|
285
322
|
POINTER(c_double),
|
|
286
|
-
POINTER(c_double)
|
|
323
|
+
POINTER(c_double),
|
|
287
324
|
]
|
|
288
325
|
self.qrack_lib.MatrixExpectationEigenVal.restype = c_double
|
|
289
326
|
self.qrack_lib.MatrixExpectationEigenVal.argtypes = [
|
|
@@ -291,7 +328,7 @@ class QrackSystem:
|
|
|
291
328
|
c_ulonglong,
|
|
292
329
|
POINTER(c_ulonglong),
|
|
293
330
|
POINTER(c_double),
|
|
294
|
-
POINTER(c_double)
|
|
331
|
+
POINTER(c_double),
|
|
295
332
|
]
|
|
296
333
|
|
|
297
334
|
self.qrack_lib.PauliExpectation.restype = c_double
|
|
@@ -299,14 +336,14 @@ class QrackSystem:
|
|
|
299
336
|
c_ulonglong,
|
|
300
337
|
c_ulonglong,
|
|
301
338
|
POINTER(c_ulonglong),
|
|
302
|
-
POINTER(c_ulonglong)
|
|
339
|
+
POINTER(c_ulonglong),
|
|
303
340
|
]
|
|
304
341
|
|
|
305
342
|
self.qrack_lib.Variance.restype = c_double
|
|
306
343
|
self.qrack_lib.Variance.argtypes = [
|
|
307
344
|
c_ulonglong,
|
|
308
345
|
c_ulonglong,
|
|
309
|
-
POINTER(c_ulonglong)
|
|
346
|
+
POINTER(c_ulonglong),
|
|
310
347
|
]
|
|
311
348
|
|
|
312
349
|
self.qrack_lib.VarianceRdm.restype = c_double
|
|
@@ -314,7 +351,7 @@ class QrackSystem:
|
|
|
314
351
|
c_ulonglong,
|
|
315
352
|
c_ulonglong,
|
|
316
353
|
POINTER(c_ulonglong),
|
|
317
|
-
c_bool
|
|
354
|
+
c_bool,
|
|
318
355
|
]
|
|
319
356
|
|
|
320
357
|
self.qrack_lib.FactorizedVariance.restype = c_double
|
|
@@ -323,7 +360,7 @@ class QrackSystem:
|
|
|
323
360
|
c_ulonglong,
|
|
324
361
|
POINTER(c_ulonglong),
|
|
325
362
|
c_ulonglong,
|
|
326
|
-
POINTER(c_ulonglong)
|
|
363
|
+
POINTER(c_ulonglong),
|
|
327
364
|
]
|
|
328
365
|
|
|
329
366
|
self.qrack_lib.FactorizedVarianceRdm.restype = c_double
|
|
@@ -333,7 +370,7 @@ class QrackSystem:
|
|
|
333
370
|
POINTER(c_ulonglong),
|
|
334
371
|
c_ulonglong,
|
|
335
372
|
POINTER(c_ulonglong),
|
|
336
|
-
c_bool
|
|
373
|
+
c_bool,
|
|
337
374
|
]
|
|
338
375
|
|
|
339
376
|
if self.fppow == 5:
|
|
@@ -342,7 +379,7 @@ class QrackSystem:
|
|
|
342
379
|
c_ulonglong,
|
|
343
380
|
c_ulonglong,
|
|
344
381
|
POINTER(c_ulonglong),
|
|
345
|
-
POINTER(c_float)
|
|
382
|
+
POINTER(c_float),
|
|
346
383
|
]
|
|
347
384
|
self.qrack_lib.FactorizedVarianceFpRdm.restype = c_double
|
|
348
385
|
self.qrack_lib.FactorizedVarianceFpRdm.argtypes = [
|
|
@@ -350,21 +387,21 @@ class QrackSystem:
|
|
|
350
387
|
c_ulonglong,
|
|
351
388
|
POINTER(c_ulonglong),
|
|
352
389
|
POINTER(c_float),
|
|
353
|
-
c_bool
|
|
390
|
+
c_bool,
|
|
354
391
|
]
|
|
355
392
|
self.qrack_lib.UnitaryVariance.restype = c_double
|
|
356
393
|
self.qrack_lib.UnitaryVariance.argtypes = [
|
|
357
394
|
c_ulonglong,
|
|
358
395
|
c_ulonglong,
|
|
359
396
|
POINTER(c_ulonglong),
|
|
360
|
-
POINTER(c_float)
|
|
397
|
+
POINTER(c_float),
|
|
361
398
|
]
|
|
362
399
|
self.qrack_lib.MatrixVariance.restype = c_double
|
|
363
400
|
self.qrack_lib.MatrixVariance.argtypes = [
|
|
364
401
|
c_ulonglong,
|
|
365
402
|
c_ulonglong,
|
|
366
403
|
POINTER(c_ulonglong),
|
|
367
|
-
POINTER(c_float)
|
|
404
|
+
POINTER(c_float),
|
|
368
405
|
]
|
|
369
406
|
self.qrack_lib.UnitaryVarianceEigenVal.restype = c_double
|
|
370
407
|
self.qrack_lib.UnitaryVarianceEigenVal.argtypes = [
|
|
@@ -372,7 +409,7 @@ class QrackSystem:
|
|
|
372
409
|
c_ulonglong,
|
|
373
410
|
POINTER(c_ulonglong),
|
|
374
411
|
POINTER(c_float),
|
|
375
|
-
POINTER(c_float)
|
|
412
|
+
POINTER(c_float),
|
|
376
413
|
]
|
|
377
414
|
self.qrack_lib.MatrixVarianceEigenVal.restype = c_double
|
|
378
415
|
self.qrack_lib.MatrixVarianceEigenVal.argtypes = [
|
|
@@ -380,7 +417,7 @@ class QrackSystem:
|
|
|
380
417
|
c_ulonglong,
|
|
381
418
|
POINTER(c_ulonglong),
|
|
382
419
|
POINTER(c_float),
|
|
383
|
-
POINTER(c_float)
|
|
420
|
+
POINTER(c_float),
|
|
384
421
|
]
|
|
385
422
|
elif self.fppow == 6:
|
|
386
423
|
self.qrack_lib.FactorizedVarianceFp.restype = c_double
|
|
@@ -388,7 +425,7 @@ class QrackSystem:
|
|
|
388
425
|
c_ulonglong,
|
|
389
426
|
c_ulonglong,
|
|
390
427
|
POINTER(c_ulonglong),
|
|
391
|
-
POINTER(c_double)
|
|
428
|
+
POINTER(c_double),
|
|
392
429
|
]
|
|
393
430
|
self.qrack_lib.FactorizedVarianceFpRdm.restype = c_double
|
|
394
431
|
self.qrack_lib.FactorizedVarianceFpRdm.argtypes = [
|
|
@@ -396,21 +433,21 @@ class QrackSystem:
|
|
|
396
433
|
c_ulonglong,
|
|
397
434
|
POINTER(c_ulonglong),
|
|
398
435
|
POINTER(c_double),
|
|
399
|
-
c_bool
|
|
436
|
+
c_bool,
|
|
400
437
|
]
|
|
401
438
|
self.qrack_lib.UnitaryVariance.restype = c_double
|
|
402
439
|
self.qrack_lib.UnitaryVariance.argtypes = [
|
|
403
440
|
c_ulonglong,
|
|
404
441
|
c_ulonglong,
|
|
405
442
|
POINTER(c_ulonglong),
|
|
406
|
-
POINTER(c_double)
|
|
443
|
+
POINTER(c_double),
|
|
407
444
|
]
|
|
408
445
|
self.qrack_lib.MatrixVariance.restype = c_double
|
|
409
446
|
self.qrack_lib.MatrixVariance.argtypes = [
|
|
410
447
|
c_ulonglong,
|
|
411
448
|
c_ulonglong,
|
|
412
449
|
POINTER(c_ulonglong),
|
|
413
|
-
POINTER(c_double)
|
|
450
|
+
POINTER(c_double),
|
|
414
451
|
]
|
|
415
452
|
self.qrack_lib.UnitaryVarianceEigenVal.restype = c_double
|
|
416
453
|
self.qrack_lib.UnitaryVarianceEigenVal.argtypes = [
|
|
@@ -418,7 +455,7 @@ class QrackSystem:
|
|
|
418
455
|
c_ulonglong,
|
|
419
456
|
POINTER(c_ulonglong),
|
|
420
457
|
POINTER(c_double),
|
|
421
|
-
POINTER(c_double)
|
|
458
|
+
POINTER(c_double),
|
|
422
459
|
]
|
|
423
460
|
self.qrack_lib.MatrixVarianceEigenVal.restype = c_double
|
|
424
461
|
self.qrack_lib.MatrixVarianceEigenVal.argtypes = [
|
|
@@ -426,7 +463,7 @@ class QrackSystem:
|
|
|
426
463
|
c_ulonglong,
|
|
427
464
|
POINTER(c_ulonglong),
|
|
428
465
|
POINTER(c_double),
|
|
429
|
-
POINTER(c_double)
|
|
466
|
+
POINTER(c_double),
|
|
430
467
|
]
|
|
431
468
|
|
|
432
469
|
self.qrack_lib.PauliVariance.restype = c_double
|
|
@@ -434,7 +471,7 @@ class QrackSystem:
|
|
|
434
471
|
c_ulonglong,
|
|
435
472
|
c_ulonglong,
|
|
436
473
|
POINTER(c_ulonglong),
|
|
437
|
-
POINTER(c_ulonglong)
|
|
474
|
+
POINTER(c_ulonglong),
|
|
438
475
|
]
|
|
439
476
|
|
|
440
477
|
self.qrack_lib.JointEnsembleProbability.restype = c_double
|
|
@@ -442,7 +479,7 @@ class QrackSystem:
|
|
|
442
479
|
c_ulonglong,
|
|
443
480
|
c_ulonglong,
|
|
444
481
|
POINTER(c_int),
|
|
445
|
-
c_ulonglong
|
|
482
|
+
c_ulonglong,
|
|
446
483
|
]
|
|
447
484
|
|
|
448
485
|
self.qrack_lib.PhaseParity.restype = None
|
|
@@ -450,7 +487,7 @@ class QrackSystem:
|
|
|
450
487
|
c_ulonglong,
|
|
451
488
|
c_double,
|
|
452
489
|
c_ulonglong,
|
|
453
|
-
POINTER(c_ulonglong)
|
|
490
|
+
POINTER(c_ulonglong),
|
|
454
491
|
]
|
|
455
492
|
|
|
456
493
|
self.qrack_lib.PhaseRootN.restype = None
|
|
@@ -458,7 +495,7 @@ class QrackSystem:
|
|
|
458
495
|
c_ulonglong,
|
|
459
496
|
c_ulonglong,
|
|
460
497
|
c_ulonglong,
|
|
461
|
-
POINTER(c_ulonglong)
|
|
498
|
+
POINTER(c_ulonglong),
|
|
462
499
|
]
|
|
463
500
|
|
|
464
501
|
self.qrack_lib.ResetAll.restype = None
|
|
@@ -507,7 +544,7 @@ class QrackSystem:
|
|
|
507
544
|
c_ulonglong,
|
|
508
545
|
c_double,
|
|
509
546
|
c_double,
|
|
510
|
-
c_double
|
|
547
|
+
c_double,
|
|
511
548
|
]
|
|
512
549
|
|
|
513
550
|
self.qrack_lib.Mtrx.restype = None
|
|
@@ -520,7 +557,7 @@ class QrackSystem:
|
|
|
520
557
|
c_ulonglong,
|
|
521
558
|
c_ulonglong,
|
|
522
559
|
POINTER(c_ulonglong),
|
|
523
|
-
c_ulonglong
|
|
560
|
+
c_ulonglong,
|
|
524
561
|
]
|
|
525
562
|
|
|
526
563
|
self.qrack_lib.MCY.restype = None
|
|
@@ -528,7 +565,7 @@ class QrackSystem:
|
|
|
528
565
|
c_ulonglong,
|
|
529
566
|
c_ulonglong,
|
|
530
567
|
POINTER(c_ulonglong),
|
|
531
|
-
c_ulonglong
|
|
568
|
+
c_ulonglong,
|
|
532
569
|
]
|
|
533
570
|
|
|
534
571
|
self.qrack_lib.MCZ.restype = None
|
|
@@ -536,7 +573,7 @@ class QrackSystem:
|
|
|
536
573
|
c_ulonglong,
|
|
537
574
|
c_ulonglong,
|
|
538
575
|
POINTER(c_ulonglong),
|
|
539
|
-
c_ulonglong
|
|
576
|
+
c_ulonglong,
|
|
540
577
|
]
|
|
541
578
|
|
|
542
579
|
self.qrack_lib.MCH.restype = None
|
|
@@ -544,7 +581,7 @@ class QrackSystem:
|
|
|
544
581
|
c_ulonglong,
|
|
545
582
|
c_ulonglong,
|
|
546
583
|
POINTER(c_ulonglong),
|
|
547
|
-
c_ulonglong
|
|
584
|
+
c_ulonglong,
|
|
548
585
|
]
|
|
549
586
|
|
|
550
587
|
self.qrack_lib.MCS.restype = None
|
|
@@ -552,7 +589,7 @@ class QrackSystem:
|
|
|
552
589
|
c_ulonglong,
|
|
553
590
|
c_ulonglong,
|
|
554
591
|
POINTER(c_ulonglong),
|
|
555
|
-
c_ulonglong
|
|
592
|
+
c_ulonglong,
|
|
556
593
|
]
|
|
557
594
|
|
|
558
595
|
self.qrack_lib.MCT.restype = None
|
|
@@ -560,7 +597,7 @@ class QrackSystem:
|
|
|
560
597
|
c_ulonglong,
|
|
561
598
|
c_ulonglong,
|
|
562
599
|
POINTER(c_ulonglong),
|
|
563
|
-
c_ulonglong
|
|
600
|
+
c_ulonglong,
|
|
564
601
|
]
|
|
565
602
|
|
|
566
603
|
self.qrack_lib.MCAdjS.restype = None
|
|
@@ -568,7 +605,7 @@ class QrackSystem:
|
|
|
568
605
|
c_ulonglong,
|
|
569
606
|
c_ulonglong,
|
|
570
607
|
POINTER(c_ulonglong),
|
|
571
|
-
c_ulonglong
|
|
608
|
+
c_ulonglong,
|
|
572
609
|
]
|
|
573
610
|
|
|
574
611
|
self.qrack_lib.MCAdjT.restype = None
|
|
@@ -576,7 +613,7 @@ class QrackSystem:
|
|
|
576
613
|
c_ulonglong,
|
|
577
614
|
c_ulonglong,
|
|
578
615
|
POINTER(c_ulonglong),
|
|
579
|
-
c_ulonglong
|
|
616
|
+
c_ulonglong,
|
|
580
617
|
]
|
|
581
618
|
|
|
582
619
|
self.qrack_lib.MCU.restype = None
|
|
@@ -587,7 +624,7 @@ class QrackSystem:
|
|
|
587
624
|
c_ulonglong,
|
|
588
625
|
c_double,
|
|
589
626
|
c_double,
|
|
590
|
-
c_double
|
|
627
|
+
c_double,
|
|
591
628
|
]
|
|
592
629
|
|
|
593
630
|
self.qrack_lib.MCMtrx.restype = None
|
|
@@ -596,7 +633,7 @@ class QrackSystem:
|
|
|
596
633
|
c_ulonglong,
|
|
597
634
|
POINTER(c_ulonglong),
|
|
598
635
|
POINTER(c_double),
|
|
599
|
-
c_ulonglong
|
|
636
|
+
c_ulonglong,
|
|
600
637
|
]
|
|
601
638
|
|
|
602
639
|
# multi-anti-controlled single-qubit gates
|
|
@@ -606,7 +643,7 @@ class QrackSystem:
|
|
|
606
643
|
c_ulonglong,
|
|
607
644
|
c_ulonglong,
|
|
608
645
|
POINTER(c_ulonglong),
|
|
609
|
-
c_ulonglong
|
|
646
|
+
c_ulonglong,
|
|
610
647
|
]
|
|
611
648
|
|
|
612
649
|
self.qrack_lib.MACY.restype = None
|
|
@@ -614,7 +651,7 @@ class QrackSystem:
|
|
|
614
651
|
c_ulonglong,
|
|
615
652
|
c_ulonglong,
|
|
616
653
|
POINTER(c_ulonglong),
|
|
617
|
-
c_ulonglong
|
|
654
|
+
c_ulonglong,
|
|
618
655
|
]
|
|
619
656
|
|
|
620
657
|
self.qrack_lib.MACZ.restype = None
|
|
@@ -622,7 +659,7 @@ class QrackSystem:
|
|
|
622
659
|
c_ulonglong,
|
|
623
660
|
c_ulonglong,
|
|
624
661
|
POINTER(c_ulonglong),
|
|
625
|
-
c_ulonglong
|
|
662
|
+
c_ulonglong,
|
|
626
663
|
]
|
|
627
664
|
|
|
628
665
|
self.qrack_lib.MACH.restype = None
|
|
@@ -630,7 +667,7 @@ class QrackSystem:
|
|
|
630
667
|
c_ulonglong,
|
|
631
668
|
c_ulonglong,
|
|
632
669
|
POINTER(c_ulonglong),
|
|
633
|
-
c_ulonglong
|
|
670
|
+
c_ulonglong,
|
|
634
671
|
]
|
|
635
672
|
|
|
636
673
|
self.qrack_lib.MACS.restype = None
|
|
@@ -638,7 +675,7 @@ class QrackSystem:
|
|
|
638
675
|
c_ulonglong,
|
|
639
676
|
c_ulonglong,
|
|
640
677
|
POINTER(c_ulonglong),
|
|
641
|
-
c_ulonglong
|
|
678
|
+
c_ulonglong,
|
|
642
679
|
]
|
|
643
680
|
|
|
644
681
|
self.qrack_lib.MACT.restype = None
|
|
@@ -646,7 +683,7 @@ class QrackSystem:
|
|
|
646
683
|
c_ulonglong,
|
|
647
684
|
c_ulonglong,
|
|
648
685
|
POINTER(c_ulonglong),
|
|
649
|
-
c_ulonglong
|
|
686
|
+
c_ulonglong,
|
|
650
687
|
]
|
|
651
688
|
|
|
652
689
|
self.qrack_lib.MACAdjS.restype = None
|
|
@@ -654,7 +691,7 @@ class QrackSystem:
|
|
|
654
691
|
c_ulonglong,
|
|
655
692
|
c_ulonglong,
|
|
656
693
|
POINTER(c_ulonglong),
|
|
657
|
-
c_ulonglong
|
|
694
|
+
c_ulonglong,
|
|
658
695
|
]
|
|
659
696
|
|
|
660
697
|
self.qrack_lib.MACAdjT.restype = None
|
|
@@ -662,7 +699,7 @@ class QrackSystem:
|
|
|
662
699
|
c_ulonglong,
|
|
663
700
|
c_ulonglong,
|
|
664
701
|
POINTER(c_ulonglong),
|
|
665
|
-
c_ulonglong
|
|
702
|
+
c_ulonglong,
|
|
666
703
|
]
|
|
667
704
|
|
|
668
705
|
self.qrack_lib.MACU.restype = None
|
|
@@ -673,7 +710,7 @@ class QrackSystem:
|
|
|
673
710
|
c_ulonglong,
|
|
674
711
|
c_double,
|
|
675
712
|
c_double,
|
|
676
|
-
c_double
|
|
713
|
+
c_double,
|
|
677
714
|
]
|
|
678
715
|
|
|
679
716
|
self.qrack_lib.MACMtrx.restype = None
|
|
@@ -682,7 +719,7 @@ class QrackSystem:
|
|
|
682
719
|
c_ulonglong,
|
|
683
720
|
POINTER(c_ulonglong),
|
|
684
721
|
POINTER(c_double),
|
|
685
|
-
c_ulonglong
|
|
722
|
+
c_ulonglong,
|
|
686
723
|
]
|
|
687
724
|
|
|
688
725
|
self.qrack_lib.UCMtrx.restype = None
|
|
@@ -692,7 +729,7 @@ class QrackSystem:
|
|
|
692
729
|
POINTER(c_ulonglong),
|
|
693
730
|
POINTER(c_double),
|
|
694
731
|
c_ulonglong,
|
|
695
|
-
c_ulonglong
|
|
732
|
+
c_ulonglong,
|
|
696
733
|
]
|
|
697
734
|
|
|
698
735
|
self.qrack_lib.Multiplex1Mtrx.restype = None
|
|
@@ -701,7 +738,7 @@ class QrackSystem:
|
|
|
701
738
|
c_ulonglong,
|
|
702
739
|
POINTER(c_ulonglong),
|
|
703
740
|
c_ulonglong,
|
|
704
|
-
POINTER(c_double)
|
|
741
|
+
POINTER(c_double),
|
|
705
742
|
]
|
|
706
743
|
|
|
707
744
|
# coalesced single qubit gates
|
|
@@ -727,7 +764,7 @@ class QrackSystem:
|
|
|
727
764
|
c_double,
|
|
728
765
|
c_ulonglong,
|
|
729
766
|
POINTER(c_ulonglong),
|
|
730
|
-
c_ulonglong
|
|
767
|
+
c_ulonglong,
|
|
731
768
|
]
|
|
732
769
|
|
|
733
770
|
# exponential of Pauli operators
|
|
@@ -738,7 +775,7 @@ class QrackSystem:
|
|
|
738
775
|
c_ulonglong,
|
|
739
776
|
POINTER(c_int),
|
|
740
777
|
c_double,
|
|
741
|
-
POINTER(c_ulonglong)
|
|
778
|
+
POINTER(c_ulonglong),
|
|
742
779
|
]
|
|
743
780
|
|
|
744
781
|
self.qrack_lib.MCExp.restype = None
|
|
@@ -749,7 +786,7 @@ class QrackSystem:
|
|
|
749
786
|
c_double,
|
|
750
787
|
c_ulonglong,
|
|
751
788
|
POINTER(c_ulonglong),
|
|
752
|
-
POINTER(c_ulonglong)
|
|
789
|
+
POINTER(c_ulonglong),
|
|
753
790
|
]
|
|
754
791
|
|
|
755
792
|
# measurements
|
|
@@ -763,12 +800,15 @@ class QrackSystem:
|
|
|
763
800
|
self.qrack_lib.MAll.restype = c_ulonglong
|
|
764
801
|
self.qrack_lib.MAll.argtypes = [c_ulonglong]
|
|
765
802
|
|
|
803
|
+
self.qrack_lib.MAllLong.restype = None
|
|
804
|
+
self.qrack_lib.MAllLong.argtypes = [c_ulonglong, POINTER(c_ulonglong)]
|
|
805
|
+
|
|
766
806
|
self.qrack_lib.Measure.restype = c_ulonglong
|
|
767
807
|
self.qrack_lib.Measure.argtypes = [
|
|
768
808
|
c_ulonglong,
|
|
769
809
|
c_ulonglong,
|
|
770
810
|
POINTER(c_int),
|
|
771
|
-
POINTER(c_ulonglong)
|
|
811
|
+
POINTER(c_ulonglong),
|
|
772
812
|
]
|
|
773
813
|
|
|
774
814
|
self.qrack_lib.MeasureShots.restype = None
|
|
@@ -777,7 +817,7 @@ class QrackSystem:
|
|
|
777
817
|
c_ulonglong,
|
|
778
818
|
POINTER(c_ulonglong),
|
|
779
819
|
c_ulonglong,
|
|
780
|
-
POINTER(c_ulonglong)
|
|
820
|
+
POINTER(c_ulonglong),
|
|
781
821
|
]
|
|
782
822
|
|
|
783
823
|
# swap
|
|
@@ -797,7 +837,7 @@ class QrackSystem:
|
|
|
797
837
|
c_double,
|
|
798
838
|
c_double,
|
|
799
839
|
c_ulonglong,
|
|
800
|
-
c_ulonglong
|
|
840
|
+
c_ulonglong,
|
|
801
841
|
]
|
|
802
842
|
|
|
803
843
|
self.qrack_lib.CSWAP.restype = None
|
|
@@ -806,7 +846,7 @@ class QrackSystem:
|
|
|
806
846
|
c_ulonglong,
|
|
807
847
|
POINTER(c_ulonglong),
|
|
808
848
|
c_ulonglong,
|
|
809
|
-
c_ulonglong
|
|
849
|
+
c_ulonglong,
|
|
810
850
|
]
|
|
811
851
|
|
|
812
852
|
self.qrack_lib.ACSWAP.restype = None
|
|
@@ -815,7 +855,7 @@ class QrackSystem:
|
|
|
815
855
|
c_ulonglong,
|
|
816
856
|
POINTER(c_ulonglong),
|
|
817
857
|
c_ulonglong,
|
|
818
|
-
c_ulonglong
|
|
858
|
+
c_ulonglong,
|
|
819
859
|
]
|
|
820
860
|
|
|
821
861
|
# Schmidt decomposition
|
|
@@ -824,21 +864,21 @@ class QrackSystem:
|
|
|
824
864
|
self.qrack_lib.Compose.argtypes = [
|
|
825
865
|
c_ulonglong,
|
|
826
866
|
c_ulonglong,
|
|
827
|
-
POINTER(c_ulonglong)
|
|
867
|
+
POINTER(c_ulonglong),
|
|
828
868
|
]
|
|
829
869
|
|
|
830
870
|
self.qrack_lib.Decompose.restype = c_ulonglong
|
|
831
871
|
self.qrack_lib.Decompose.argtypes = [
|
|
832
872
|
c_ulonglong,
|
|
833
873
|
c_ulonglong,
|
|
834
|
-
POINTER(c_ulonglong)
|
|
874
|
+
POINTER(c_ulonglong),
|
|
835
875
|
]
|
|
836
876
|
|
|
837
877
|
self.qrack_lib.Dispose.restype = None
|
|
838
878
|
self.qrack_lib.Dispose.argtypes = [
|
|
839
879
|
c_ulonglong,
|
|
840
880
|
c_ulonglong,
|
|
841
|
-
POINTER(c_ulonglong)
|
|
881
|
+
POINTER(c_ulonglong),
|
|
842
882
|
]
|
|
843
883
|
|
|
844
884
|
# (quasi-)Boolean gates
|
|
@@ -848,7 +888,7 @@ class QrackSystem:
|
|
|
848
888
|
c_ulonglong,
|
|
849
889
|
c_ulonglong,
|
|
850
890
|
c_ulonglong,
|
|
851
|
-
c_ulonglong
|
|
891
|
+
c_ulonglong,
|
|
852
892
|
]
|
|
853
893
|
|
|
854
894
|
self.qrack_lib.OR.restype = None
|
|
@@ -856,7 +896,7 @@ class QrackSystem:
|
|
|
856
896
|
c_ulonglong,
|
|
857
897
|
c_ulonglong,
|
|
858
898
|
c_ulonglong,
|
|
859
|
-
c_ulonglong
|
|
899
|
+
c_ulonglong,
|
|
860
900
|
]
|
|
861
901
|
|
|
862
902
|
self.qrack_lib.XOR.restype = None
|
|
@@ -864,7 +904,7 @@ class QrackSystem:
|
|
|
864
904
|
c_ulonglong,
|
|
865
905
|
c_ulonglong,
|
|
866
906
|
c_ulonglong,
|
|
867
|
-
c_ulonglong
|
|
907
|
+
c_ulonglong,
|
|
868
908
|
]
|
|
869
909
|
|
|
870
910
|
self.qrack_lib.NAND.restype = None
|
|
@@ -872,7 +912,7 @@ class QrackSystem:
|
|
|
872
912
|
c_ulonglong,
|
|
873
913
|
c_ulonglong,
|
|
874
914
|
c_ulonglong,
|
|
875
|
-
c_ulonglong
|
|
915
|
+
c_ulonglong,
|
|
876
916
|
]
|
|
877
917
|
|
|
878
918
|
self.qrack_lib.NOR.restype = None
|
|
@@ -880,7 +920,7 @@ class QrackSystem:
|
|
|
880
920
|
c_ulonglong,
|
|
881
921
|
c_ulonglong,
|
|
882
922
|
c_ulonglong,
|
|
883
|
-
c_ulonglong
|
|
923
|
+
c_ulonglong,
|
|
884
924
|
]
|
|
885
925
|
|
|
886
926
|
self.qrack_lib.XNOR.restype = None
|
|
@@ -888,7 +928,7 @@ class QrackSystem:
|
|
|
888
928
|
c_ulonglong,
|
|
889
929
|
c_ulonglong,
|
|
890
930
|
c_ulonglong,
|
|
891
|
-
c_ulonglong
|
|
931
|
+
c_ulonglong,
|
|
892
932
|
]
|
|
893
933
|
|
|
894
934
|
# half classical (quasi-)Boolean gates
|
|
@@ -927,7 +967,7 @@ class QrackSystem:
|
|
|
927
967
|
c_ulonglong,
|
|
928
968
|
POINTER(c_ulonglong),
|
|
929
969
|
c_ulonglong,
|
|
930
|
-
POINTER(c_ulonglong)
|
|
970
|
+
POINTER(c_ulonglong),
|
|
931
971
|
]
|
|
932
972
|
|
|
933
973
|
self.qrack_lib.SUB.restype = None
|
|
@@ -936,7 +976,7 @@ class QrackSystem:
|
|
|
936
976
|
c_ulonglong,
|
|
937
977
|
POINTER(c_ulonglong),
|
|
938
978
|
c_ulonglong,
|
|
939
|
-
POINTER(c_ulonglong)
|
|
979
|
+
POINTER(c_ulonglong),
|
|
940
980
|
]
|
|
941
981
|
|
|
942
982
|
self.qrack_lib.ADDS.restype = None
|
|
@@ -946,7 +986,7 @@ class QrackSystem:
|
|
|
946
986
|
POINTER(c_ulonglong),
|
|
947
987
|
c_ulonglong,
|
|
948
988
|
c_ulonglong,
|
|
949
|
-
POINTER(c_ulonglong)
|
|
989
|
+
POINTER(c_ulonglong),
|
|
950
990
|
]
|
|
951
991
|
|
|
952
992
|
self.qrack_lib.SUBS.restype = None
|
|
@@ -956,7 +996,7 @@ class QrackSystem:
|
|
|
956
996
|
POINTER(c_ulonglong),
|
|
957
997
|
c_ulonglong,
|
|
958
998
|
c_ulonglong,
|
|
959
|
-
POINTER(c_ulonglong)
|
|
999
|
+
POINTER(c_ulonglong),
|
|
960
1000
|
]
|
|
961
1001
|
|
|
962
1002
|
self.qrack_lib.MUL.restype = None
|
|
@@ -966,7 +1006,7 @@ class QrackSystem:
|
|
|
966
1006
|
POINTER(c_ulonglong),
|
|
967
1007
|
c_ulonglong,
|
|
968
1008
|
POINTER(c_ulonglong),
|
|
969
|
-
POINTER(c_ulonglong)
|
|
1009
|
+
POINTER(c_ulonglong),
|
|
970
1010
|
]
|
|
971
1011
|
|
|
972
1012
|
self.qrack_lib.DIV.restype = None
|
|
@@ -976,7 +1016,7 @@ class QrackSystem:
|
|
|
976
1016
|
POINTER(c_ulonglong),
|
|
977
1017
|
c_ulonglong,
|
|
978
1018
|
POINTER(c_ulonglong),
|
|
979
|
-
POINTER(c_ulonglong)
|
|
1019
|
+
POINTER(c_ulonglong),
|
|
980
1020
|
]
|
|
981
1021
|
|
|
982
1022
|
self.qrack_lib.MULN.restype = None
|
|
@@ -987,7 +1027,7 @@ class QrackSystem:
|
|
|
987
1027
|
POINTER(c_ulonglong),
|
|
988
1028
|
c_ulonglong,
|
|
989
1029
|
POINTER(c_ulonglong),
|
|
990
|
-
POINTER(c_ulonglong)
|
|
1030
|
+
POINTER(c_ulonglong),
|
|
991
1031
|
]
|
|
992
1032
|
|
|
993
1033
|
self.qrack_lib.DIVN.restype = None
|
|
@@ -998,7 +1038,7 @@ class QrackSystem:
|
|
|
998
1038
|
POINTER(c_ulonglong),
|
|
999
1039
|
c_ulonglong,
|
|
1000
1040
|
POINTER(c_ulonglong),
|
|
1001
|
-
POINTER(c_ulonglong)
|
|
1041
|
+
POINTER(c_ulonglong),
|
|
1002
1042
|
]
|
|
1003
1043
|
|
|
1004
1044
|
self.qrack_lib.POWN.restype = None
|
|
@@ -1009,7 +1049,7 @@ class QrackSystem:
|
|
|
1009
1049
|
POINTER(c_ulonglong),
|
|
1010
1050
|
c_ulonglong,
|
|
1011
1051
|
POINTER(c_ulonglong),
|
|
1012
|
-
POINTER(c_ulonglong)
|
|
1052
|
+
POINTER(c_ulonglong),
|
|
1013
1053
|
]
|
|
1014
1054
|
|
|
1015
1055
|
self.qrack_lib.MCADD.restype = None
|
|
@@ -1020,7 +1060,7 @@ class QrackSystem:
|
|
|
1020
1060
|
c_ulonglong,
|
|
1021
1061
|
POINTER(c_ulonglong),
|
|
1022
1062
|
c_ulonglong,
|
|
1023
|
-
POINTER(c_ulonglong)
|
|
1063
|
+
POINTER(c_ulonglong),
|
|
1024
1064
|
]
|
|
1025
1065
|
|
|
1026
1066
|
self.qrack_lib.MCSUB.restype = None
|
|
@@ -1031,7 +1071,7 @@ class QrackSystem:
|
|
|
1031
1071
|
c_ulonglong,
|
|
1032
1072
|
POINTER(c_ulonglong),
|
|
1033
1073
|
c_ulonglong,
|
|
1034
|
-
POINTER(c_ulonglong)
|
|
1074
|
+
POINTER(c_ulonglong),
|
|
1035
1075
|
]
|
|
1036
1076
|
|
|
1037
1077
|
self.qrack_lib.MCMUL.restype = None
|
|
@@ -1042,7 +1082,7 @@ class QrackSystem:
|
|
|
1042
1082
|
c_ulonglong,
|
|
1043
1083
|
POINTER(c_ulonglong),
|
|
1044
1084
|
c_ulonglong,
|
|
1045
|
-
POINTER(c_ulonglong)
|
|
1085
|
+
POINTER(c_ulonglong),
|
|
1046
1086
|
]
|
|
1047
1087
|
|
|
1048
1088
|
self.qrack_lib.MCDIV.restype = None
|
|
@@ -1053,7 +1093,7 @@ class QrackSystem:
|
|
|
1053
1093
|
c_ulonglong,
|
|
1054
1094
|
POINTER(c_ulonglong),
|
|
1055
1095
|
c_ulonglong,
|
|
1056
|
-
POINTER(c_ulonglong)
|
|
1096
|
+
POINTER(c_ulonglong),
|
|
1057
1097
|
]
|
|
1058
1098
|
|
|
1059
1099
|
self.qrack_lib.MCMULN.restype = None
|
|
@@ -1066,7 +1106,7 @@ class QrackSystem:
|
|
|
1066
1106
|
POINTER(c_ulonglong),
|
|
1067
1107
|
c_ulonglong,
|
|
1068
1108
|
POINTER(c_ulonglong),
|
|
1069
|
-
POINTER(c_ulonglong)
|
|
1109
|
+
POINTER(c_ulonglong),
|
|
1070
1110
|
]
|
|
1071
1111
|
|
|
1072
1112
|
self.qrack_lib.MCDIVN.restype = None
|
|
@@ -1079,7 +1119,7 @@ class QrackSystem:
|
|
|
1079
1119
|
POINTER(c_ulonglong),
|
|
1080
1120
|
c_ulonglong,
|
|
1081
1121
|
POINTER(c_ulonglong),
|
|
1082
|
-
POINTER(c_ulonglong)
|
|
1122
|
+
POINTER(c_ulonglong),
|
|
1083
1123
|
]
|
|
1084
1124
|
|
|
1085
1125
|
self.qrack_lib.MCPOWN.restype = None
|
|
@@ -1092,7 +1132,7 @@ class QrackSystem:
|
|
|
1092
1132
|
POINTER(c_ulonglong),
|
|
1093
1133
|
c_ulonglong,
|
|
1094
1134
|
POINTER(c_ulonglong),
|
|
1095
|
-
POINTER(c_ulonglong)
|
|
1135
|
+
POINTER(c_ulonglong),
|
|
1096
1136
|
]
|
|
1097
1137
|
|
|
1098
1138
|
self.qrack_lib.LDA.restype = None
|
|
@@ -1102,7 +1142,7 @@ class QrackSystem:
|
|
|
1102
1142
|
POINTER(c_ulonglong),
|
|
1103
1143
|
c_ulonglong,
|
|
1104
1144
|
POINTER(c_ulonglong),
|
|
1105
|
-
POINTER(c_ubyte)
|
|
1145
|
+
POINTER(c_ubyte),
|
|
1106
1146
|
]
|
|
1107
1147
|
|
|
1108
1148
|
self.qrack_lib.ADC.restype = None
|
|
@@ -1113,7 +1153,7 @@ class QrackSystem:
|
|
|
1113
1153
|
POINTER(c_ulonglong),
|
|
1114
1154
|
c_ulonglong,
|
|
1115
1155
|
POINTER(c_ulonglong),
|
|
1116
|
-
POINTER(c_ubyte)
|
|
1156
|
+
POINTER(c_ubyte),
|
|
1117
1157
|
]
|
|
1118
1158
|
|
|
1119
1159
|
self.qrack_lib.SBC.restype = None
|
|
@@ -1124,7 +1164,7 @@ class QrackSystem:
|
|
|
1124
1164
|
POINTER(c_ulonglong),
|
|
1125
1165
|
c_ulonglong,
|
|
1126
1166
|
POINTER(c_ulonglong),
|
|
1127
|
-
POINTER(c_ubyte)
|
|
1167
|
+
POINTER(c_ubyte),
|
|
1128
1168
|
]
|
|
1129
1169
|
|
|
1130
1170
|
self.qrack_lib.Hash.restype = None
|
|
@@ -1132,7 +1172,7 @@ class QrackSystem:
|
|
|
1132
1172
|
c_ulonglong,
|
|
1133
1173
|
c_ulonglong,
|
|
1134
1174
|
POINTER(c_ulonglong),
|
|
1135
|
-
POINTER(c_ubyte)
|
|
1175
|
+
POINTER(c_ubyte),
|
|
1136
1176
|
]
|
|
1137
1177
|
|
|
1138
1178
|
# miscellaneous
|
|
@@ -1148,7 +1188,14 @@ class QrackSystem:
|
|
|
1148
1188
|
c_ulonglong,
|
|
1149
1189
|
c_ulonglong,
|
|
1150
1190
|
POINTER(c_ulonglong),
|
|
1151
|
-
c_double
|
|
1191
|
+
c_double,
|
|
1192
|
+
]
|
|
1193
|
+
|
|
1194
|
+
self.qrack_lib.Separate.restype = None
|
|
1195
|
+
self.qrack_lib.Separate.argtypes = [
|
|
1196
|
+
c_ulonglong,
|
|
1197
|
+
c_ulonglong,
|
|
1198
|
+
POINTER(c_ulonglong),
|
|
1152
1199
|
]
|
|
1153
1200
|
|
|
1154
1201
|
self.qrack_lib.GetUnitaryFidelity.restype = c_double
|
|
@@ -1163,12 +1210,18 @@ class QrackSystem:
|
|
|
1163
1210
|
self.qrack_lib.SetNcrp.restype = None
|
|
1164
1211
|
self.qrack_lib.SetNcrp.argtypes = [c_ulonglong, c_double]
|
|
1165
1212
|
|
|
1166
|
-
self.qrack_lib.SetReactiveSeparate.restype =
|
|
1213
|
+
self.qrack_lib.SetReactiveSeparate.restype = None
|
|
1167
1214
|
self.qrack_lib.SetReactiveSeparate.argtypes = [c_ulonglong, c_bool]
|
|
1168
1215
|
|
|
1169
|
-
self.qrack_lib.SetTInjection.restype =
|
|
1216
|
+
self.qrack_lib.SetTInjection.restype = None
|
|
1170
1217
|
self.qrack_lib.SetTInjection.argtypes = [c_ulonglong, c_bool]
|
|
1171
1218
|
|
|
1219
|
+
self.qrack_lib.SetNoiseParameter.restype = None
|
|
1220
|
+
self.qrack_lib.SetNoiseParameter.argtypes = [c_ulonglong, c_double]
|
|
1221
|
+
|
|
1222
|
+
self.qrack_lib.Normalize.restype = None
|
|
1223
|
+
self.qrack_lib.Normalize.argtypes = [c_ulonglong]
|
|
1224
|
+
|
|
1172
1225
|
self.qrack_lib.qstabilizer_out_to_file.restype = None
|
|
1173
1226
|
self.qrack_lib.qstabilizer_out_to_file.argtypes = [c_ulonglong, c_char_p]
|
|
1174
1227
|
|
|
@@ -1176,7 +1229,15 @@ class QrackSystem:
|
|
|
1176
1229
|
self.qrack_lib.qstabilizer_in_from_file.argtypes = [c_ulonglong, c_char_p]
|
|
1177
1230
|
|
|
1178
1231
|
self.qrack_lib.init_qneuron.restype = c_ulonglong
|
|
1179
|
-
self.qrack_lib.init_qneuron.argtypes = [
|
|
1232
|
+
self.qrack_lib.init_qneuron.argtypes = [
|
|
1233
|
+
c_ulonglong,
|
|
1234
|
+
c_ulonglong,
|
|
1235
|
+
POINTER(c_ulonglong),
|
|
1236
|
+
c_ulonglong,
|
|
1237
|
+
c_ulonglong,
|
|
1238
|
+
c_double,
|
|
1239
|
+
c_double,
|
|
1240
|
+
]
|
|
1180
1241
|
|
|
1181
1242
|
self.qrack_lib.clone_qneuron.restype = c_ulonglong
|
|
1182
1243
|
self.qrack_lib.clone_qneuron.argtypes = [c_ulonglong]
|
|
@@ -1191,8 +1252,14 @@ class QrackSystem:
|
|
|
1191
1252
|
self.qrack_lib.set_qneuron_angles.argtypes = [c_ulonglong, POINTER(c_float)]
|
|
1192
1253
|
self.qrack_lib.get_qneuron_angles.argtypes = [c_ulonglong, POINTER(c_float)]
|
|
1193
1254
|
elif self.fppow == 6:
|
|
1194
|
-
self.qrack_lib.set_qneuron_angles.argtypes = [
|
|
1195
|
-
|
|
1255
|
+
self.qrack_lib.set_qneuron_angles.argtypes = [
|
|
1256
|
+
c_ulonglong,
|
|
1257
|
+
POINTER(c_double),
|
|
1258
|
+
]
|
|
1259
|
+
self.qrack_lib.get_qneuron_angles.argtypes = [
|
|
1260
|
+
c_ulonglong,
|
|
1261
|
+
POINTER(c_double),
|
|
1262
|
+
]
|
|
1196
1263
|
|
|
1197
1264
|
self.qrack_lib.set_qneuron_alpha.restype = None
|
|
1198
1265
|
self.qrack_lib.set_qneuron_alpha.argtypes = [c_ulonglong, c_double]
|
|
@@ -1219,7 +1286,12 @@ class QrackSystem:
|
|
|
1219
1286
|
self.qrack_lib.qneuron_learn.argtypes = [c_ulonglong, c_double, c_bool, c_bool]
|
|
1220
1287
|
|
|
1221
1288
|
self.qrack_lib.qneuron_learn_permutation.restype = None
|
|
1222
|
-
self.qrack_lib.qneuron_learn_permutation.argtypes = [
|
|
1289
|
+
self.qrack_lib.qneuron_learn_permutation.argtypes = [
|
|
1290
|
+
c_ulonglong,
|
|
1291
|
+
c_double,
|
|
1292
|
+
c_bool,
|
|
1293
|
+
c_bool,
|
|
1294
|
+
]
|
|
1223
1295
|
|
|
1224
1296
|
self.qrack_lib.init_qcircuit.restype = c_ulonglong
|
|
1225
1297
|
self.qrack_lib.init_qcircuit.argtypes = [c_bool, c_bool]
|
|
@@ -1231,7 +1303,11 @@ class QrackSystem:
|
|
|
1231
1303
|
self.qrack_lib.qcircuit_inverse.argtypes = [c_ulonglong]
|
|
1232
1304
|
|
|
1233
1305
|
self.qrack_lib.qcircuit_past_light_cone.restype = c_ulonglong
|
|
1234
|
-
self.qrack_lib.qcircuit_past_light_cone.argtypes = [
|
|
1306
|
+
self.qrack_lib.qcircuit_past_light_cone.argtypes = [
|
|
1307
|
+
c_ulonglong,
|
|
1308
|
+
c_ulonglong,
|
|
1309
|
+
POINTER(c_ulonglong),
|
|
1310
|
+
]
|
|
1235
1311
|
|
|
1236
1312
|
self.qrack_lib.destroy_qcircuit.restype = None
|
|
1237
1313
|
self.qrack_lib.destroy_qcircuit.argtypes = [c_ulonglong]
|
|
@@ -1243,10 +1319,21 @@ class QrackSystem:
|
|
|
1243
1319
|
self.qrack_lib.qcircuit_swap.argtypes = [c_ulonglong, c_ulonglong, c_ulonglong]
|
|
1244
1320
|
|
|
1245
1321
|
self.qrack_lib.qcircuit_append_1qb.restype = None
|
|
1246
|
-
self.qrack_lib.qcircuit_append_1qb.argtypes = [
|
|
1322
|
+
self.qrack_lib.qcircuit_append_1qb.argtypes = [
|
|
1323
|
+
c_ulonglong,
|
|
1324
|
+
POINTER(c_double),
|
|
1325
|
+
c_ulonglong,
|
|
1326
|
+
]
|
|
1247
1327
|
|
|
1248
1328
|
self.qrack_lib.qcircuit_append_mc.restype = None
|
|
1249
|
-
self.qrack_lib.qcircuit_append_mc.argtypes = [
|
|
1329
|
+
self.qrack_lib.qcircuit_append_mc.argtypes = [
|
|
1330
|
+
c_ulonglong,
|
|
1331
|
+
POINTER(c_double),
|
|
1332
|
+
c_ulonglong,
|
|
1333
|
+
POINTER(c_ulonglong),
|
|
1334
|
+
c_ulonglong,
|
|
1335
|
+
c_ulonglong,
|
|
1336
|
+
]
|
|
1250
1337
|
|
|
1251
1338
|
self.qrack_lib.qcircuit_run.restype = None
|
|
1252
1339
|
self.qrack_lib.qcircuit_run.argtypes = [c_ulonglong, c_ulonglong]
|
|
@@ -1256,3 +1343,9 @@ class QrackSystem:
|
|
|
1256
1343
|
|
|
1257
1344
|
self.qrack_lib.qcircuit_in_from_file.restype = None
|
|
1258
1345
|
self.qrack_lib.qcircuit_in_from_file.argtypes = [c_ulonglong, c_char_p]
|
|
1346
|
+
|
|
1347
|
+
self.qrack_lib.qcircuit_out_to_string_length.restype = c_size_t
|
|
1348
|
+
self.qrack_lib.qcircuit_out_to_string_length.argtypes = [c_ulonglong]
|
|
1349
|
+
|
|
1350
|
+
self.qrack_lib.qcircuit_out_to_string.restype = None
|
|
1351
|
+
self.qrack_lib.qcircuit_out_to_string.argtypes = [c_ulonglong, c_char_p]
|