ket-lang 0.8.3.dev0__tar.gz → 0.8.4.dev0__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.
- {ket_lang-0.8.3.dev0/src/ket_lang.egg-info → ket_lang-0.8.4.dev0}/PKG-INFO +1 -1
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/__init__.py +1 -1
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/base.py +0 -8
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/gates.py +58 -12
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/lib/__init__.py +43 -6
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0/src/ket_lang.egg-info}/PKG-INFO +1 -1
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/LICENSE +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/MANIFEST.in +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/README.md +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/pyproject.toml +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/setup.cfg +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/setup.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/__init__.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/kbw.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libket.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/__init__.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/.git +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/.gitignore +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/.gitlab-ci.yml +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/.pre-commit-config.yaml +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/CHANGELOG.md +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/Cargo.toml +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/LICENSE +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/LICENSES/Apache-2.0.txt +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/README.md +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/REUSE.toml +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/build.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/examples/grover.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/bitwise.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/c_api.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/convert.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/dense.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/dense_v2.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/error.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/lib.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/quantum_execution.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/sparse.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/.git +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/.gitignore +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/.gitlab-ci.yml +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/.pre-commit-config.yaml +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/CHANGELOG.md +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/Cargo.toml +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/LICENSE +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/LICENSES/Apache-2.0.txt +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/README.md +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/REUSE.toml +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/build.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/examples/grover.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/examples/mcx.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/examples/qft.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/c_api/error.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/c_api/execution.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/c_api/mod.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/c_api/objects.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/c_api/process.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/circuit.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/decompose/mod.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/decompose/su2.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/decompose/u2.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/decompose/util.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/decompose/x.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/error.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ex_arch.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/execution.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/graph.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ir/gate.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ir/hamiltonian.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ir/instructions.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ir/mod.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ir/qubit.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/lib.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/mapping/allocation.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/mapping/graph.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/mapping/map.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/mapping/mcpe.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/mapping/mod.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/prelude.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/process.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/util.rs +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/wrapper.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/expv.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/ibm/__init__.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/ibm/ibm_client.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/ibm/qiskit_builder.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/operations.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/quantumstate.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/remote.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket_lang.egg-info/SOURCES.txt +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket_lang.egg-info/dependency_links.txt +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket_lang.egg-info/not-zip-safe +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket_lang.egg-info/requires.txt +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket_lang.egg-info/top_level.txt +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/tests/test_decompose.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/tests/test_u3_gate.py +0 -0
- {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/tests/test_unitaty_gate.py +0 -0
|
@@ -26,8 +26,8 @@ Example:
|
|
|
26
26
|
from math import pi
|
|
27
27
|
from ket import *
|
|
28
28
|
|
|
29
|
-
s_gate =
|
|
30
|
-
t_gate =
|
|
29
|
+
s_gate = P(pi/2)
|
|
30
|
+
t_gate = P(pi/4)
|
|
31
31
|
|
|
32
32
|
p = Process()
|
|
33
33
|
q = p.alloc()
|
|
@@ -47,6 +47,7 @@ from math import pi
|
|
|
47
47
|
from functools import reduce
|
|
48
48
|
from operator import add
|
|
49
49
|
from typing import Any, Callable
|
|
50
|
+
import warnings
|
|
50
51
|
|
|
51
52
|
from .clib.libket import (
|
|
52
53
|
HADAMARD,
|
|
@@ -72,12 +73,14 @@ __all__ = [
|
|
|
72
73
|
"RY",
|
|
73
74
|
"RZ",
|
|
74
75
|
"PHASE",
|
|
76
|
+
"P",
|
|
75
77
|
"S",
|
|
76
78
|
"T",
|
|
77
79
|
"SD",
|
|
78
80
|
"TD",
|
|
79
81
|
"U3",
|
|
80
82
|
"CNOT",
|
|
83
|
+
"CZ",
|
|
81
84
|
"SWAP",
|
|
82
85
|
"RXX",
|
|
83
86
|
"RZZ",
|
|
@@ -93,7 +96,7 @@ def _gate_docstring(name, matrix, effect=None) -> str:
|
|
|
93
96
|
|
|
94
97
|
.. csv-table::
|
|
95
98
|
:delim: ;
|
|
96
|
-
:header: Matrix{"
|
|
99
|
+
:header: Matrix{"; Effect" if effect is not None else ""}
|
|
97
100
|
|
|
98
101
|
:math:`{matrix}`{f"; :math:`{effect}`" if effect is not None else ""}
|
|
99
102
|
"""
|
|
@@ -277,7 +280,7 @@ RZ.__doc__ = _gate_docstring(
|
|
|
277
280
|
)
|
|
278
281
|
|
|
279
282
|
|
|
280
|
-
def
|
|
283
|
+
def P( # pylint: disable=invalid-name missing-function-docstring
|
|
281
284
|
theta: float, qubits: Quant | None = None
|
|
282
285
|
) -> Quant | Callable[[Quant], Quant]:
|
|
283
286
|
|
|
@@ -294,6 +297,17 @@ def PHASE( # pylint: disable=invalid-name missing-function-docstring
|
|
|
294
297
|
return inner(qubits)
|
|
295
298
|
|
|
296
299
|
|
|
300
|
+
def PHASE( # pylint: disable=invalid-name missing-function-docstring
|
|
301
|
+
theta: float, qubits: Quant | None = None
|
|
302
|
+
) -> Quant | Callable[[Quant], Quant]:
|
|
303
|
+
warnings.warn(
|
|
304
|
+
"PHASE is deprecated and will be removed in future versions. Use P(theta, qubits) instead.",
|
|
305
|
+
DeprecationWarning,
|
|
306
|
+
stacklevel=2,
|
|
307
|
+
)
|
|
308
|
+
return P(theta, qubits)
|
|
309
|
+
|
|
310
|
+
|
|
297
311
|
PHASE.__doc__ = _gate_docstring(
|
|
298
312
|
"Phase shift",
|
|
299
313
|
r"\begin{bmatrix} 1 & 0 \\ 0 & e^{i\theta} \end{bmatrix}",
|
|
@@ -302,7 +316,15 @@ PHASE.__doc__ = _gate_docstring(
|
|
|
302
316
|
)
|
|
303
317
|
|
|
304
318
|
|
|
305
|
-
|
|
319
|
+
P.__doc__ = _gate_docstring(
|
|
320
|
+
"Phase shift",
|
|
321
|
+
r"\begin{bmatrix} 1 & 0 \\ 0 & e^{i\theta} \end{bmatrix}",
|
|
322
|
+
r"\begin{matrix} P\left|0\right> = & \left|0\right> \\"
|
|
323
|
+
r"P\left|1\right> = & e^{i\theta}\left|1\right> \end{matrix}",
|
|
324
|
+
)
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
S = P(pi / 2)
|
|
306
328
|
S.__doc__ = _gate_docstring(
|
|
307
329
|
"S",
|
|
308
330
|
r"\begin{bmatrix} 1 & 0 \\ 0 & i \end{bmatrix}",
|
|
@@ -310,7 +332,7 @@ S.__doc__ = _gate_docstring(
|
|
|
310
332
|
r"S\left|1\right> = & i\left|1\right> \end{matrix}",
|
|
311
333
|
)
|
|
312
334
|
|
|
313
|
-
SD =
|
|
335
|
+
SD = P(-pi / 2)
|
|
314
336
|
SD.__doc__ = _gate_docstring(
|
|
315
337
|
"S-dagger",
|
|
316
338
|
r"\begin{bmatrix} 1 & 0 \\ 0 & -i \end{bmatrix}",
|
|
@@ -318,7 +340,7 @@ SD.__doc__ = _gate_docstring(
|
|
|
318
340
|
r"S^\dagger\left|1\right> = & -i\left|1\right> \end{matrix}",
|
|
319
341
|
)
|
|
320
342
|
|
|
321
|
-
T =
|
|
343
|
+
T = P(pi / 4)
|
|
322
344
|
T.__doc__ = _gate_docstring(
|
|
323
345
|
"T",
|
|
324
346
|
r"\begin{bmatrix} 1 & 0 \\ 0 & e^{i\pi/4} \end{bmatrix}",
|
|
@@ -326,7 +348,7 @@ T.__doc__ = _gate_docstring(
|
|
|
326
348
|
r"T\left|1\right> = & e^{i\pi/4}\left|1\right> \end{matrix}",
|
|
327
349
|
)
|
|
328
350
|
|
|
329
|
-
TD =
|
|
351
|
+
TD = P(-pi / 4)
|
|
330
352
|
TD.__doc__ = _gate_docstring(
|
|
331
353
|
"T-dagger",
|
|
332
354
|
r"\begin{bmatrix} 1 & 0 \\ 0 & e^{-i\pi/4} \end{bmatrix}",
|
|
@@ -359,6 +381,30 @@ CNOT.__doc__ = _gate_docstring(
|
|
|
359
381
|
)
|
|
360
382
|
|
|
361
383
|
|
|
384
|
+
def CZ( # pylint: disable=invalid-name missing-function-docstring
|
|
385
|
+
*qubits: list[Quant],
|
|
386
|
+
) -> list[Quant, Quant]:
|
|
387
|
+
for q in zip(*qubits):
|
|
388
|
+
ctrl(q[:-1], X)(q[-1])
|
|
389
|
+
return qubits
|
|
390
|
+
|
|
391
|
+
|
|
392
|
+
CZ.__doc__ = _gate_docstring(
|
|
393
|
+
"Multi-Controlled Z",
|
|
394
|
+
r"\begin{bmatrix}"
|
|
395
|
+
r"1 & 0 & \cdots & 0 & 0 \\ 0 & 1 & \cdots & 0 & 0 \\"
|
|
396
|
+
r"\vdots & \vdots & \ddots & \vdots & \vdots \\ 0 & 0 & \cdots & 1 & 0 \\"
|
|
397
|
+
r"0 & 0 & \cdots & 0 & -1"
|
|
398
|
+
r"\end{bmatrix}",
|
|
399
|
+
r"\begin{matrix}"
|
|
400
|
+
r"\text{CZ}\left|0\cdots0\right> = & \left|0\cdots0\right> \\"
|
|
401
|
+
r"\text{CZ}\left|0\cdots1\right> = & \left|0\cdots1\right> \\"
|
|
402
|
+
r"\text{CZ}\left|1\cdots0\right> = & \left|1\cdots0\right> \\"
|
|
403
|
+
r"\text{CZ}\left|1\cdots1\right> = & -\left|1\cdots1\right> \\"
|
|
404
|
+
r"\end{matrix}",
|
|
405
|
+
)
|
|
406
|
+
|
|
407
|
+
|
|
362
408
|
def SWAP( # pylint: disable=invalid-name missing-function-docstring
|
|
363
409
|
qubit_a: Quant, qubit_b: Quant
|
|
364
410
|
) -> tuple[Quant, Quant]:
|
|
@@ -386,7 +432,7 @@ SWAP.__doc__ = _gate_docstring(
|
|
|
386
432
|
|
|
387
433
|
|
|
388
434
|
def RXX( # pylint: disable=invalid-name missing-function-docstring
|
|
389
|
-
theta: float, qubits_a: Quant | None, qubits_b: Quant | None
|
|
435
|
+
theta: float, qubits_a: Quant | None = None, qubits_b: Quant | None = None
|
|
390
436
|
) -> tuple[Quant, Quant] | Callable[[Quant, Quant], tuple[Quant, Quant]]:
|
|
391
437
|
def inner(qubits_a: Quant, qubits_b: Quant) -> tuple[Quant, Quant]:
|
|
392
438
|
for qubit_a, qubit_b in zip(qubits_a, qubits_b):
|
|
@@ -410,7 +456,7 @@ RXX.__doc__ = _gate_docstring(
|
|
|
410
456
|
|
|
411
457
|
|
|
412
458
|
def RZZ( # pylint: disable=invalid-name missing-function-docstring
|
|
413
|
-
theta: float, qubits_a: Quant | None, qubits_b: Quant | None
|
|
459
|
+
theta: float, qubits_a: Quant | None = None, qubits_b: Quant | None = None
|
|
414
460
|
) -> tuple[Quant, Quant] | Callable[[Quant, Quant], tuple[Quant, Quant]]:
|
|
415
461
|
def inner(qubits_a: Quant, qubits_b: Quant) -> tuple[Quant, Quant]:
|
|
416
462
|
for qubit_a, qubit_b in zip(qubits_a, qubits_b):
|
|
@@ -434,7 +480,7 @@ RZZ.__doc__ = _gate_docstring(
|
|
|
434
480
|
|
|
435
481
|
|
|
436
482
|
def RYY( # pylint: disable=invalid-name missing-function-docstring
|
|
437
|
-
theta: float, qubits_a: Quant | None, qubits_b: Quant | None
|
|
483
|
+
theta: float, qubits_a: Quant | None = None, qubits_b: Quant | None = None
|
|
438
484
|
) -> tuple[Quant, Quant] | Callable[[Quant, Quant], tuple[Quant, Quant]]:
|
|
439
485
|
def inner(qubits_a: Quant, qubits_b: Quant) -> tuple[Quant, Quant]:
|
|
440
486
|
for qubit_a, qubit_b in zip(qubits_a, qubits_b):
|
|
@@ -459,7 +505,7 @@ RYY.__doc__ = _gate_docstring(
|
|
|
459
505
|
|
|
460
506
|
|
|
461
507
|
def RBS( # pylint: disable=invalid-name missing-function-docstring
|
|
462
|
-
theta: float, qubits_a: Quant | None, qubits_b: Quant | None
|
|
508
|
+
theta: float, qubits_a: Quant | None = None, qubits_b: Quant | None = None
|
|
463
509
|
) -> tuple[Quant, Quant] | Callable[[Quant, Quant], tuple[Quant, Quant]]:
|
|
464
510
|
def inner(qubits_a: Quant, qubits_b: Quant) -> tuple[Quant, Quant]:
|
|
465
511
|
for qubit_a, qubit_b in zip(qubits_a, qubits_b):
|
|
@@ -140,18 +140,17 @@ def dump_matrix(
|
|
|
140
140
|
gate: Callable,
|
|
141
141
|
num_qubits: int | list[int] = 1,
|
|
142
142
|
args=(),
|
|
143
|
-
|
|
143
|
+
process: Process | None = None,
|
|
144
144
|
) -> list[list[complex]]:
|
|
145
145
|
"""Get the matrix representation of a quantum gate.
|
|
146
146
|
|
|
147
|
-
This function calculates the matrix representation of a quantum gate
|
|
148
|
-
the specified simulator.
|
|
147
|
+
This function calculates the matrix representation of a quantum gate.
|
|
149
148
|
|
|
150
149
|
Args:
|
|
151
150
|
gate: Quantum gate operation to obtain the matrix for.
|
|
152
151
|
num_qubits: Number of qubits.
|
|
153
152
|
args: Classical arguments to pass to the gate function.
|
|
154
|
-
|
|
153
|
+
process: Quantum process used to generate the matrix.
|
|
155
154
|
|
|
156
155
|
Returns:
|
|
157
156
|
Matrix representation of the quantum gate.
|
|
@@ -164,7 +163,12 @@ def dump_matrix(
|
|
|
164
163
|
|
|
165
164
|
num_qubits = sum(num_qubits) if isinstance(num_qubits, Iterable) else num_qubits
|
|
166
165
|
|
|
167
|
-
process
|
|
166
|
+
if process is None:
|
|
167
|
+
process = Process(
|
|
168
|
+
num_qubits=2 * num_qubits,
|
|
169
|
+
execution="batch",
|
|
170
|
+
simulator="sparse",
|
|
171
|
+
)
|
|
168
172
|
|
|
169
173
|
mat = [[0.0j for _ in range(2**num_qubits)] for _ in range(2**num_qubits)]
|
|
170
174
|
|
|
@@ -325,6 +329,39 @@ def unitary(matrix: list[list[complex]]) -> Callable[[Quant], Quant]:
|
|
|
325
329
|
return inner
|
|
326
330
|
|
|
327
331
|
|
|
332
|
+
DRAW_STYLE = {
|
|
333
|
+
"textcolor": "#0f1f2e",
|
|
334
|
+
"gatetextcolor": "#f4f8ff",
|
|
335
|
+
"subtextcolor": "#f4f8ff",
|
|
336
|
+
"linecolor": "#0f1f2e",
|
|
337
|
+
"creglinecolor": "#6b7682",
|
|
338
|
+
"gatefacecolor": "#0f7cfb",
|
|
339
|
+
"barrierfacecolor": "#c6cdd5",
|
|
340
|
+
"backgroundcolor": "#f4f8ff",
|
|
341
|
+
"displaytext": {
|
|
342
|
+
"u1": "P",
|
|
343
|
+
"rx": "RX",
|
|
344
|
+
"ry": "RY",
|
|
345
|
+
"rz": "RZ",
|
|
346
|
+
},
|
|
347
|
+
"displaycolor": {
|
|
348
|
+
"u1": ["#008699", "#f4f8ff"],
|
|
349
|
+
"x": ["#0f7cfb", "#f4f8ff"],
|
|
350
|
+
"y": ["#0c63c9", "#f4f8ff"],
|
|
351
|
+
"z": ["#009cb3", "#f4f8ff"],
|
|
352
|
+
"h": ["#3f96fc", "#f4f8ff"],
|
|
353
|
+
"rx": ["#063264", "#f4f8ff"],
|
|
354
|
+
"ry": ["#094a97", "#f4f8ff"],
|
|
355
|
+
"rz": ["#008699", "#f4f8ff"],
|
|
356
|
+
"cx": ["#0f7cfb", "#f4f8ff"],
|
|
357
|
+
"ccx": ["#0f7cfb", "#f4f8ff"],
|
|
358
|
+
"mcx": ["#0f7cfb", "#f4f8ff"],
|
|
359
|
+
"cy": ["#0c63c9", "#f4f8ff"],
|
|
360
|
+
"cz": ["#009cb3", "#f4f8ff"],
|
|
361
|
+
},
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
|
|
328
365
|
def draw(
|
|
329
366
|
gate: Callable[[Quant], None],
|
|
330
367
|
num_qubits: int | list[int],
|
|
@@ -367,4 +404,4 @@ def draw(
|
|
|
367
404
|
q = [p.alloc(num_qubits)]
|
|
368
405
|
gate(*args, *q)
|
|
369
406
|
p.execute()
|
|
370
|
-
return device.circuit.draw(**kwargs)
|
|
407
|
+
return device.circuit.draw(**kwargs, style=DRAW_STYLE)
|
|
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
|
|
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
|
{ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/.pre-commit-config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/LICENSES/Apache-2.0.txt
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/mapping/allocation.rs
RENAMED
|
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
|