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.
Files changed (96) hide show
  1. {ket_lang-0.8.3.dev0/src/ket_lang.egg-info → ket_lang-0.8.4.dev0}/PKG-INFO +1 -1
  2. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/__init__.py +1 -1
  3. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/base.py +0 -8
  4. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/gates.py +58 -12
  5. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/lib/__init__.py +43 -6
  6. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0/src/ket_lang.egg-info}/PKG-INFO +1 -1
  7. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/LICENSE +0 -0
  8. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/MANIFEST.in +0 -0
  9. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/README.md +0 -0
  10. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/pyproject.toml +0 -0
  11. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/setup.cfg +0 -0
  12. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/setup.py +0 -0
  13. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/__init__.py +0 -0
  14. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/kbw.py +0 -0
  15. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libket.py +0 -0
  16. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/__init__.py +0 -0
  17. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/.git +0 -0
  18. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/.gitignore +0 -0
  19. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/.gitlab-ci.yml +0 -0
  20. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/.pre-commit-config.yaml +0 -0
  21. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/CHANGELOG.md +0 -0
  22. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/Cargo.toml +0 -0
  23. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/LICENSE +0 -0
  24. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/LICENSES/Apache-2.0.txt +0 -0
  25. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/README.md +0 -0
  26. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/REUSE.toml +0 -0
  27. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/build.rs +0 -0
  28. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/examples/grover.rs +0 -0
  29. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/bitwise.rs +0 -0
  30. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/c_api.rs +0 -0
  31. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/convert.rs +0 -0
  32. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/dense.rs +0 -0
  33. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/dense_v2.rs +0 -0
  34. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/error.rs +0 -0
  35. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/lib.rs +0 -0
  36. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/quantum_execution.rs +0 -0
  37. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/kbw/src/sparse.rs +0 -0
  38. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/.git +0 -0
  39. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/.gitignore +0 -0
  40. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/.gitlab-ci.yml +0 -0
  41. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/.pre-commit-config.yaml +0 -0
  42. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/CHANGELOG.md +0 -0
  43. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/Cargo.toml +0 -0
  44. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/LICENSE +0 -0
  45. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/LICENSES/Apache-2.0.txt +0 -0
  46. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/README.md +0 -0
  47. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/REUSE.toml +0 -0
  48. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/build.rs +0 -0
  49. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/examples/grover.rs +0 -0
  50. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/examples/mcx.rs +0 -0
  51. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/examples/qft.rs +0 -0
  52. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/c_api/error.rs +0 -0
  53. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/c_api/execution.rs +0 -0
  54. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/c_api/mod.rs +0 -0
  55. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/c_api/objects.rs +0 -0
  56. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/c_api/process.rs +0 -0
  57. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/circuit.rs +0 -0
  58. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/decompose/mod.rs +0 -0
  59. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/decompose/su2.rs +0 -0
  60. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/decompose/u2.rs +0 -0
  61. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/decompose/util.rs +0 -0
  62. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/decompose/x.rs +0 -0
  63. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/error.rs +0 -0
  64. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ex_arch.rs +0 -0
  65. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/execution.rs +0 -0
  66. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/graph.rs +0 -0
  67. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ir/gate.rs +0 -0
  68. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ir/hamiltonian.rs +0 -0
  69. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ir/instructions.rs +0 -0
  70. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ir/mod.rs +0 -0
  71. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/ir/qubit.rs +0 -0
  72. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/lib.rs +0 -0
  73. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/mapping/allocation.rs +0 -0
  74. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/mapping/graph.rs +0 -0
  75. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/mapping/map.rs +0 -0
  76. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/mapping/mcpe.rs +0 -0
  77. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/mapping/mod.rs +0 -0
  78. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/prelude.rs +0 -0
  79. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/process.rs +0 -0
  80. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/libs/libket/src/util.rs +0 -0
  81. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/clib/wrapper.py +0 -0
  82. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/expv.py +0 -0
  83. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/ibm/__init__.py +0 -0
  84. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/ibm/ibm_client.py +0 -0
  85. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/ibm/qiskit_builder.py +0 -0
  86. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/operations.py +0 -0
  87. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/quantumstate.py +0 -0
  88. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket/remote.py +0 -0
  89. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket_lang.egg-info/SOURCES.txt +0 -0
  90. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket_lang.egg-info/dependency_links.txt +0 -0
  91. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket_lang.egg-info/not-zip-safe +0 -0
  92. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket_lang.egg-info/requires.txt +0 -0
  93. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/src/ket_lang.egg-info/top_level.txt +0 -0
  94. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/tests/test_decompose.py +0 -0
  95. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/tests/test_u3_gate.py +0 -0
  96. {ket_lang-0.8.3.dev0 → ket_lang-0.8.4.dev0}/tests/test_unitaty_gate.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ket-lang
3
- Version: 0.8.3.dev0
3
+ Version: 0.8.4.dev0
4
4
  Summary: Ket quantum programming language interpreter and library
5
5
  Home-page: https://quantumket.org
6
6
  Author: Evandro Chagas Ribeiro da Rosa
@@ -90,7 +90,7 @@ from .expv import __all__ as all_expv
90
90
  from .quantumstate import *
91
91
  from .quantumstate import __all__ as all_state
92
92
 
93
- __version__ = "0.8.3.dev0"
93
+ __version__ = "0.8.4.dev0"
94
94
 
95
95
  __all__ = all_base + all_func + all_gate + all_expv + all_state
96
96
 
@@ -677,14 +677,6 @@ class Samples:
677
677
  **kwargs,
678
678
  )
679
679
 
680
- fig.update_layout(
681
- bargap=0.75,
682
- xaxis={
683
- "tickmode": "linear",
684
- "dtick": 1,
685
- },
686
- )
687
-
688
680
  return fig
689
681
 
690
682
  def __repr__(self) -> str:
@@ -26,8 +26,8 @@ Example:
26
26
  from math import pi
27
27
  from ket import *
28
28
 
29
- s_gate = PHASE(pi/2)
30
- t_gate = PHASE(pi/4)
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{", Effect" if effect is not None else ""}
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 PHASE( # pylint: disable=invalid-name missing-function-docstring
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
- S = PHASE(pi / 2)
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 = PHASE(-pi / 2)
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 = PHASE(pi / 4)
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 = PHASE(-pi / 4)
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
- simulator: Literal["sparse", "dense"] = "sparse",
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 using
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
- simulator: Simulator type to use.
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 = Process(num_qubits=2 * num_qubits, execution="batch", simulator=simulator)
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)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: ket-lang
3
- Version: 0.8.3.dev0
3
+ Version: 0.8.4.dev0
4
4
  Summary: Ket quantum programming language interpreter and library
5
5
  Home-page: https://quantumket.org
6
6
  Author: Evandro Chagas Ribeiro da Rosa
File without changes
File without changes
File without changes
File without changes
File without changes