tensorcircuit-nightly 1.3.0.dev20250903__py3-none-any.whl → 1.3.0.dev20250905__py3-none-any.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.
Potentially problematic release.
This version of tensorcircuit-nightly might be problematic. Click here for more details.
- tensorcircuit/__init__.py +1 -1
- tensorcircuit/abstractcircuit.py +1 -0
- tensorcircuit/backends/abstract_backend.py +33 -5
- tensorcircuit/backends/jax_backend.py +3 -0
- tensorcircuit/backends/numpy_backend.py +3 -0
- tensorcircuit/backends/pytorch_backend.py +3 -0
- tensorcircuit/backends/tensorflow_backend.py +3 -0
- tensorcircuit/basecircuit.py +127 -75
- tensorcircuit/circuit.py +54 -52
- tensorcircuit/cons.py +1 -0
- tensorcircuit/densitymatrix.py +13 -8
- tensorcircuit/gates.py +28 -22
- tensorcircuit/mpscircuit.py +89 -59
- tensorcircuit/quantum.py +274 -105
- tensorcircuit/results/counts.py +45 -31
- tensorcircuit/simplify.py +3 -1
- tensorcircuit/timeevol.py +42 -33
- {tensorcircuit_nightly-1.3.0.dev20250903.dist-info → tensorcircuit_nightly-1.3.0.dev20250905.dist-info}/METADATA +1 -1
- {tensorcircuit_nightly-1.3.0.dev20250903.dist-info → tensorcircuit_nightly-1.3.0.dev20250905.dist-info}/RECORD +22 -22
- {tensorcircuit_nightly-1.3.0.dev20250903.dist-info → tensorcircuit_nightly-1.3.0.dev20250905.dist-info}/WHEEL +0 -0
- {tensorcircuit_nightly-1.3.0.dev20250903.dist-info → tensorcircuit_nightly-1.3.0.dev20250905.dist-info}/licenses/LICENSE +0 -0
- {tensorcircuit_nightly-1.3.0.dev20250903.dist-info → tensorcircuit_nightly-1.3.0.dev20250905.dist-info}/top_level.txt +0 -0
tensorcircuit/results/counts.py
CHANGED
|
@@ -6,6 +6,7 @@ from typing import Any, Dict, Optional, Sequence
|
|
|
6
6
|
|
|
7
7
|
import numpy as np
|
|
8
8
|
|
|
9
|
+
from ..quantum import _decode_basis_label
|
|
9
10
|
|
|
10
11
|
Tensor = Any
|
|
11
12
|
ct = Dict[str, int]
|
|
@@ -89,14 +90,24 @@ def marginal_count(count: ct, keep_list: Sequence[int]) -> ct:
|
|
|
89
90
|
return reverse_count(ncount)
|
|
90
91
|
|
|
91
92
|
|
|
92
|
-
def count2vec(
|
|
93
|
+
def count2vec(
|
|
94
|
+
count: ct, normalization: bool = True, dim: Optional[int] = None
|
|
95
|
+
) -> Tensor:
|
|
93
96
|
"""
|
|
94
|
-
Convert
|
|
97
|
+
Convert a dictionary of counts (with string keys) to a probability/count vector.
|
|
98
|
+
|
|
99
|
+
Support:
|
|
100
|
+
- base-d string (d <= 36), characters taken from 0-9A-Z (case-insensitive)
|
|
101
|
+
For example:
|
|
102
|
+
qubit: '0101'
|
|
103
|
+
qudit: '012' or '09A' (A represents 10, which means [0, 9, 10])
|
|
95
104
|
|
|
96
105
|
:param count: A dictionary mapping bit strings to counts
|
|
97
106
|
:type count: ct
|
|
98
107
|
:param normalization: Whether to normalize the counts to probabilities, defaults to True
|
|
99
108
|
:type normalization: bool, optional
|
|
109
|
+
:param dim: Dimensionality of the vector, defaults to 2
|
|
110
|
+
:type dim: int, optional
|
|
100
111
|
:return: Probability vector as numpy array
|
|
101
112
|
:rtype: Tensor
|
|
102
113
|
|
|
@@ -105,44 +116,47 @@ def count2vec(count: ct, normalization: bool = True) -> Tensor:
|
|
|
105
116
|
>>> count2vec({"00": 2, "10": 3, "11": 5})
|
|
106
117
|
array([0.2, 0. , 0.3, 0.5])
|
|
107
118
|
"""
|
|
108
|
-
nqubit = len(list(count.keys())[0])
|
|
109
|
-
probability = [0] * 2**nqubit
|
|
110
|
-
shots = sum([v for k, v in count.items()])
|
|
111
|
-
for k, v in count.items():
|
|
112
|
-
if normalization is True:
|
|
113
|
-
v /= shots # type: ignore
|
|
114
|
-
probability[int(k, 2)] = v
|
|
115
|
-
return np.array(probability)
|
|
116
119
|
|
|
120
|
+
if not count:
|
|
121
|
+
return np.array([], dtype=float)
|
|
117
122
|
|
|
118
|
-
|
|
119
|
-
"""
|
|
120
|
-
Convert probability vector to count dictionary.
|
|
123
|
+
dim = 2 if dim is None else dim
|
|
121
124
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
n = len(next(iter(count)).upper())
|
|
126
|
+
prob = np.zeros(dim**n, dtype=float)
|
|
127
|
+
shots = float(sum(count.values())) if normalization else 1.0
|
|
128
|
+
if shots == 0:
|
|
129
|
+
return prob
|
|
130
|
+
|
|
131
|
+
powers = [dim**p for p in range(n)][::-1]
|
|
132
|
+
for k, v in count.items():
|
|
133
|
+
digits = _decode_basis_label(k, n, dim)
|
|
134
|
+
idx = sum(dig * p for dig, p in zip(digits, powers))
|
|
135
|
+
prob[idx] = (v / shots) if normalization else v
|
|
136
|
+
|
|
137
|
+
return prob
|
|
128
138
|
|
|
129
|
-
:Example:
|
|
130
139
|
|
|
131
|
-
|
|
132
|
-
{'00': 0.2, '01': 0.3, '10': 0.1, '11': 0.4}
|
|
140
|
+
def vec2count(vec: Tensor, prune: bool = False, dim: Optional[int] = None) -> ct:
|
|
133
141
|
"""
|
|
134
|
-
|
|
142
|
+
Map a count/probability vector of length D to a dictionary with base-d string keys (0-9A-Z).
|
|
143
|
+
Only generate string keys when d ≤ 36; if d is inferred to be > 36, raise a NotImplementedError.
|
|
135
144
|
|
|
145
|
+
:param vec: A one-dimensional vector of length D = d**n
|
|
146
|
+
:param prune: Whether to prune near-zero elements (threshold 1e-8)
|
|
147
|
+
:param dim: Dimensionality of the vector, defaults to 2
|
|
148
|
+
:return: {base-d string key: value}, key length n
|
|
149
|
+
"""
|
|
150
|
+
from ..quantum import count_vector2dict, _infer_num_sites
|
|
151
|
+
|
|
152
|
+
dim = 2 if dim is None else dim
|
|
136
153
|
if isinstance(vec, list):
|
|
137
154
|
vec = np.array(vec)
|
|
138
|
-
n = int(
|
|
139
|
-
c = count_vector2dict(vec, n, key="bin")
|
|
140
|
-
if prune
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
if np.abs(v) < 1e-8:
|
|
144
|
-
del nc[k]
|
|
145
|
-
return nc
|
|
155
|
+
n = _infer_num_sites(int(vec.shape[0]), dim)
|
|
156
|
+
c: ct = count_vector2dict(vec, n, key="bin", dim=dim) # type: ignore
|
|
157
|
+
if prune:
|
|
158
|
+
c = {k: v for k, v in c.items() if np.abs(v) >= 1e-8}
|
|
159
|
+
|
|
146
160
|
return c
|
|
147
161
|
|
|
148
162
|
|
tensorcircuit/simplify.py
CHANGED
|
@@ -121,7 +121,9 @@ def _split_two_qubit_gate(
|
|
|
121
121
|
if fixed_choice == 2: # swap one
|
|
122
122
|
return n3, n4, True # swap
|
|
123
123
|
s2 = n3.tensor.shape[-1]
|
|
124
|
-
if (s1 >=
|
|
124
|
+
if (s1 >= n[0].dimension * n[2].dimension) and (
|
|
125
|
+
s2 >= n[1].dimension * n[3].dimension
|
|
126
|
+
):
|
|
125
127
|
# jax jit unspport split_node with trun_err anyway
|
|
126
128
|
# tf function doesn't work either, though I believe it may work on tf side
|
|
127
129
|
# CANNOT DONE(@refraction-ray): tf.function version with trun_err set
|
tensorcircuit/timeevol.py
CHANGED
|
@@ -435,10 +435,10 @@ def _solve_ode(
|
|
|
435
435
|
args: Any,
|
|
436
436
|
solver_kws: Dict[str, Any],
|
|
437
437
|
) -> Tensor:
|
|
438
|
-
rtol = solver_kws.get("rtol", 1e-
|
|
439
|
-
atol = solver_kws.get("atol", 1e-
|
|
438
|
+
rtol = solver_kws.get("rtol", 1e-8)
|
|
439
|
+
atol = solver_kws.get("atol", 1e-8)
|
|
440
440
|
ode_backend = solver_kws.get("ode_backend", "jaxode")
|
|
441
|
-
max_steps = solver_kws.get("max_steps",
|
|
441
|
+
max_steps = solver_kws.get("max_steps", 4096)
|
|
442
442
|
|
|
443
443
|
ts = backend.convert_to_tensor(times)
|
|
444
444
|
ts = backend.cast(ts, dtype=rdtypestr)
|
|
@@ -493,17 +493,15 @@ def ode_evol_local(
|
|
|
493
493
|
) -> Tensor:
|
|
494
494
|
"""
|
|
495
495
|
ODE-based time evolution for a time-dependent Hamiltonian acting on a subsystem of qubits.
|
|
496
|
-
|
|
497
496
|
This function solves the time-dependent Schrodinger equation using numerical ODE integration.
|
|
498
497
|
The Hamiltonian is applied only to a specific subset of qubits (indices) in the system.
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
of 'Dopri5');if set to 'diffrax', it uses `diffrax.diffeqsolve` instead (with a default solver of 'Tsit5').
|
|
498
|
+
The ode_backend parameter defaults to 'jaxode' (which uses ``jax.experimental.ode.odeint`` with a default solver
|
|
499
|
+
of 'Dopri5'); if set to 'diffrax', it uses ``diffrax.diffeqsolve`` instead (with a default solver of 'Tsit5').
|
|
502
500
|
|
|
503
501
|
Note: This function currently only supports the JAX backend.
|
|
504
502
|
|
|
505
503
|
:param hamiltonian: A function that returns a dense Hamiltonian matrix for the specified
|
|
506
|
-
subsystem size. The function signature should be hamiltonian(time, *args) -> Tensor
|
|
504
|
+
subsystem size. The function signature should be ``hamiltonian(time, *args) -> Tensor``.
|
|
507
505
|
:type hamiltonian: Callable[..., Tensor]
|
|
508
506
|
:param initial_state: The initial quantum state vector of the full system.
|
|
509
507
|
:type initial_state: Tensor
|
|
@@ -515,15 +513,22 @@ def ode_evol_local(
|
|
|
515
513
|
:type callback: Optional[Callable[..., Tensor]]
|
|
516
514
|
:param args: Additional arguments to pass to the Hamiltonian function.
|
|
517
515
|
:param solver_kws: Additional keyword arguments to pass to the ODE solver.
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
516
|
+
|
|
517
|
+
- ``ode_backend='jaxode'`` (default) uses ``jax.experimental.ode.odeint``; ``ode_backend='diffrax'``
|
|
518
|
+
uses ``diffrax.diffeqsolve``.
|
|
519
|
+
|
|
520
|
+
- ``rtol`` (default: 1e-8) and ``atol`` (default: 1e-8) are used to determine how accurately you would
|
|
521
521
|
like the numerical approximation to your equation.
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
522
|
+
|
|
523
|
+
- The ``solver`` parameter accepts one of {'Tsit5' (default), 'Dopri5', 'Dopri8', 'Kvaerno5'}
|
|
524
|
+
and only works when ``ode_backend='diffrax'``.
|
|
525
|
+
|
|
526
|
+
- ``t0`` (default: 0.01) specifies the initial step size and only works when ``ode_backend='diffrax'``.
|
|
527
|
+
|
|
528
|
+
- ``max_steps`` (default: 4096) The maximum number of steps to take before quitting the computation
|
|
529
|
+
unconditionally and only works when ``ode_backend='diffrax'``.
|
|
530
|
+
:type solver_kws: dict
|
|
531
|
+
|
|
527
532
|
:return: Evolved quantum states at the specified time points. If callback is provided,
|
|
528
533
|
returns the callback results; otherwise returns the state vectors.
|
|
529
534
|
:rtype: Tensor
|
|
@@ -566,18 +571,16 @@ def ode_evol_global(
|
|
|
566
571
|
) -> Tensor:
|
|
567
572
|
"""
|
|
568
573
|
ODE-based time evolution for a time-dependent Hamiltonian acting on the entire system.
|
|
569
|
-
|
|
570
574
|
This function solves the time-dependent Schrodinger equation using numerical ODE integration.
|
|
571
|
-
The Hamiltonian is applied to the full system and should be provided in sparse matrix
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
of 'Dopri5');if set to 'diffrax', it uses `diffrax.diffeqsolve` instead (with a default solver of 'Tsit5').
|
|
575
|
+
The Hamiltonian is applied to the full system and should be provided in sparse matrix
|
|
576
|
+
format for efficiency.
|
|
577
|
+
The ode_backend parameter defaults to 'jaxode' (which uses ``jax.experimental.ode.odeint`` with a default solver
|
|
578
|
+
of 'Dopri5'); if set to 'diffrax', it uses ``diffrax.diffeqsolve`` instead (with a default solver of 'Tsit5').
|
|
576
579
|
|
|
577
580
|
Note: This function currently only supports the JAX backend.
|
|
578
581
|
|
|
579
582
|
:param hamiltonian: A function that returns a sparse Hamiltonian matrix for the full system.
|
|
580
|
-
The function signature should be hamiltonian(time, *args) -> Tensor
|
|
583
|
+
The function signature should be ``hamiltonian(time, *args) -> Tensor``.
|
|
581
584
|
:type hamiltonian: Callable[..., Tensor]
|
|
582
585
|
:param initial_state: The initial quantum state vector.
|
|
583
586
|
:type initial_state: Tensor
|
|
@@ -588,16 +591,22 @@ def ode_evol_global(
|
|
|
588
591
|
:param args: Additional arguments to pass to the Hamiltonian function.
|
|
589
592
|
:type args: tuple | list
|
|
590
593
|
:param solver_kws: Additional keyword arguments to pass to the ODE solver.
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
+
|
|
595
|
+
- ``ode_backend='jaxode'`` (default) uses ``jax.experimental.ode.odeint``; ``ode_backend='diffrax'``
|
|
596
|
+
uses ``diffrax.diffeqsolve``.
|
|
597
|
+
|
|
598
|
+
- ``rtol`` (default: 1e-8) and ``atol`` (default: 1e-8) are used to determine how accurately you would
|
|
594
599
|
like the numerical approximation to your equation.
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
+
|
|
601
|
+
- The ``solver`` parameter accepts one of {'Tsit5' (default), 'Dopri5', 'Dopri8', 'Kvaerno5'}
|
|
602
|
+
and only works when ``ode_backend='diffrax'``.
|
|
603
|
+
|
|
604
|
+
- ``t0`` (default: 0.01) specifies the initial step size and only works when ``ode_backend='diffrax'``.
|
|
605
|
+
|
|
606
|
+
- ``max_steps`` (default: 4096) The maximum number of steps to take before quitting the computation
|
|
607
|
+
unconditionally and only works when ``ode_backend='diffrax'``.
|
|
600
608
|
:type solver_kws: dict
|
|
609
|
+
|
|
601
610
|
:return: Evolved quantum states at the specified time points. If callback is provided,
|
|
602
611
|
returns the callback results; otherwise returns the state vectors.
|
|
603
612
|
:rtype: Tensor
|
|
@@ -632,7 +641,7 @@ def evol_local(
|
|
|
632
641
|
:param index: qubit sites to evolve
|
|
633
642
|
:type index: Sequence[int]
|
|
634
643
|
:param h_fun: h_fun should return a dense Hamiltonian matrix
|
|
635
|
-
with input arguments time and
|
|
644
|
+
with input arguments ``time`` and ``*args``
|
|
636
645
|
:type h_fun: Callable[..., Tensor]
|
|
637
646
|
:param t: evolution time
|
|
638
647
|
:type t: float
|
|
@@ -658,7 +667,7 @@ def evol_global(
|
|
|
658
667
|
:param c: _description_
|
|
659
668
|
:type c: Circuit
|
|
660
669
|
:param h_fun: h_fun should return a **SPARSE** Hamiltonian matrix
|
|
661
|
-
with input arguments time and
|
|
670
|
+
with input arguments ``time`` and ``*args``
|
|
662
671
|
:type h_fun: Callable[..., Tensor]
|
|
663
672
|
:param t: _description_
|
|
664
673
|
:type t: float
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tensorcircuit-nightly
|
|
3
|
-
Version: 1.3.0.
|
|
3
|
+
Version: 1.3.0.dev20250905
|
|
4
4
|
Summary: High performance unified quantum computing framework for the NISQ era
|
|
5
5
|
Author-email: TensorCircuit Authors <znfesnpbh@gmail.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
tensorcircuit/__init__.py,sha256=
|
|
1
|
+
tensorcircuit/__init__.py,sha256=dd4tq2LvPbfVgoBICvl1iGu68wI3U5G3dyPOqJ_jKZw,2055
|
|
2
2
|
tensorcircuit/about.py,sha256=DazTswU2nAwOmASTaDII3L04PVtaQ7oiWPty5YMI3Wk,5267
|
|
3
|
-
tensorcircuit/abstractcircuit.py,sha256=
|
|
3
|
+
tensorcircuit/abstractcircuit.py,sha256=VgvQiSeUagCR65kS2qo3TzrEjE7ER2uYGUwzDUzcn-8,44141
|
|
4
4
|
tensorcircuit/asciiart.py,sha256=neY1OWFwtoW5cHPNwkQHgRPktDniQvdlP9QKHkk52fM,8236
|
|
5
|
-
tensorcircuit/basecircuit.py,sha256=
|
|
5
|
+
tensorcircuit/basecircuit.py,sha256=R8xH-hHiFrTJXYgHnODy74Q4Bfu8e46jI1DS4H_XixY,39804
|
|
6
6
|
tensorcircuit/channels.py,sha256=CFQxWI-JmkIxexslCBdjp_RSxUbHs6eAJv4LvlXXXCY,28637
|
|
7
|
-
tensorcircuit/circuit.py,sha256=
|
|
8
|
-
tensorcircuit/cons.py,sha256=
|
|
9
|
-
tensorcircuit/densitymatrix.py,sha256=
|
|
7
|
+
tensorcircuit/circuit.py,sha256=2uizrd9cCEcVORzSIWmuZXnwnPYsu-GZmDVLQLdqBNs,39930
|
|
8
|
+
tensorcircuit/cons.py,sha256=V0wjevtDkESCIWMJaysgPVorQlPAIT0vtRWvIZkEWcE,33065
|
|
9
|
+
tensorcircuit/densitymatrix.py,sha256=J-dZPqY_t_93bayAdjNVWne38Sa_sb58LSzjZ83oezU,15006
|
|
10
10
|
tensorcircuit/experimental.py,sha256=TGK4FaS6TS_ZhtjcIZgYVuAkGdRW50LN0DdXp-h4bos,29906
|
|
11
11
|
tensorcircuit/fgs.py,sha256=J1TjAiiqZk9KO1xYX_V0xsgKlYZaUQ7Enm4s5zkRM50,49514
|
|
12
|
-
tensorcircuit/gates.py,sha256=
|
|
12
|
+
tensorcircuit/gates.py,sha256=KLAYZyX_MyvKw4s4HZ0trw_3q9VCTHh8nwn2_ZaIV2c,29598
|
|
13
13
|
tensorcircuit/keras.py,sha256=nMSuu9uZy7haWwuen1g_6GFVwYIirtX9IvejDyoH33M,10129
|
|
14
14
|
tensorcircuit/mps_base.py,sha256=UZ-v8vsr_rAsKrfun8prVgbXJ-qsdqKy2DZIHpq3sxo,15400
|
|
15
|
-
tensorcircuit/mpscircuit.py,sha256=
|
|
15
|
+
tensorcircuit/mpscircuit.py,sha256=CPWlsb-kybZE-lh4iUkVMDn45qhHtFHUnxATP6TsaVk,38802
|
|
16
16
|
tensorcircuit/noisemodel.py,sha256=vzxpoYEZbHVC4a6g7_Jk4dxsHi4wvhpRFwud8b616Qo,11878
|
|
17
|
-
tensorcircuit/quantum.py,sha256=
|
|
17
|
+
tensorcircuit/quantum.py,sha256=1Ajavk9OpK7Bg2_2_MXZ0DxGQPQ2iv8ZHhjxSUsASTg,110641
|
|
18
18
|
tensorcircuit/shadows.py,sha256=6XmWNubbuaxFNvZVWu-RXd0lN9Jkk-xwong_K8o8_KE,17014
|
|
19
|
-
tensorcircuit/simplify.py,sha256=
|
|
19
|
+
tensorcircuit/simplify.py,sha256=EuEyQenFit-hgQhEJecL7t7jJ8m8zQ4KuL_sEvPNu-I,9488
|
|
20
20
|
tensorcircuit/stabilizercircuit.py,sha256=KbrBVSo2pXnf5JHIrxwRPSPTm7bJVMIcyE4d7-dIfCM,15545
|
|
21
|
-
tensorcircuit/timeevol.py,sha256=
|
|
21
|
+
tensorcircuit/timeevol.py,sha256=LqytBb2NaxudyCvip3KHzvnCGDb52PLB1jysepDzoqo,31857
|
|
22
22
|
tensorcircuit/torchnn.py,sha256=z_QpM0QC3mydGyWpyp877j-tSFCPyzynCwqrTWaw-IA,4637
|
|
23
23
|
tensorcircuit/translation.py,sha256=VnU7DnYmbk1cWjqa7N68WNLNDn3DwENrMzmbG4_CQco,28611
|
|
24
24
|
tensorcircuit/utils.py,sha256=nEDR1wTh1WF_yV6UyZYlifqOPWdKk_Krr4HjhrWHnGQ,7228
|
|
@@ -40,15 +40,15 @@ tensorcircuit/applications/physics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
|
|
|
40
40
|
tensorcircuit/applications/physics/baseline.py,sha256=RWrzMGnC0PtmpYSFkvCE7r1llR88gncXuCakAAhFE-w,1775
|
|
41
41
|
tensorcircuit/applications/physics/fss.py,sha256=ny3U9ZDmT459PXjA1oUGfarBOlSKSy6fs04vD9s1XH4,3633
|
|
42
42
|
tensorcircuit/backends/__init__.py,sha256=WiUmbUFzM29w3hKfhuKxVUk3PpqDFiXf4za9g0ctpZA,80
|
|
43
|
-
tensorcircuit/backends/abstract_backend.py,sha256=
|
|
43
|
+
tensorcircuit/backends/abstract_backend.py,sha256=SR_mRmFNJiz1MqTfoP18zJB4iTiOrGX56VoTjQ2t87k,70296
|
|
44
44
|
tensorcircuit/backends/backend_factory.py,sha256=Z0aQ-RnxOnQzp-SRw8sefAH8XyBSlj2NXZwOlHinbfY,1713
|
|
45
45
|
tensorcircuit/backends/cupy_backend.py,sha256=KG5fqP29wnngkPsi-TnOk0pHsr9lyD7hx6_Y56fCQuY,15172
|
|
46
|
-
tensorcircuit/backends/jax_backend.py,sha256=
|
|
46
|
+
tensorcircuit/backends/jax_backend.py,sha256=H43ofYIgdGpz3ubOIIAhbqMGHs6m12NXI3iJc_z3CZ0,28112
|
|
47
47
|
tensorcircuit/backends/jax_ops.py,sha256=WyUGavch2R9uEFsI1Ap7eP1UcU4s2TItBgGsrVS3Hzs,9320
|
|
48
|
-
tensorcircuit/backends/numpy_backend.py,sha256=
|
|
49
|
-
tensorcircuit/backends/pytorch_backend.py,sha256=
|
|
48
|
+
tensorcircuit/backends/numpy_backend.py,sha256=0N7Z6slwDsAkWBislzsy0YhKTxa2Woq_xaCCX_SFuHI,15613
|
|
49
|
+
tensorcircuit/backends/pytorch_backend.py,sha256=ixHFpSJhPw0gJS5pEprmjDkYNLanqtcENqJAHRJyDVM,25686
|
|
50
50
|
tensorcircuit/backends/pytorch_ops.py,sha256=lLxpK6OqfpVwifyFlgsqhpnt-oIn4R5paPMVg51WaW0,3826
|
|
51
|
-
tensorcircuit/backends/tensorflow_backend.py,sha256=
|
|
51
|
+
tensorcircuit/backends/tensorflow_backend.py,sha256=9SAfcWEoKvyJG4sM0I89ozW16aa3VMxMfcOUeDljShE,39813
|
|
52
52
|
tensorcircuit/backends/tf_ops.py,sha256=FJwDU7LhZrt0VUIx12DJU0gZnWhMv7B7r9sAKG710As,3378
|
|
53
53
|
tensorcircuit/cloud/__init__.py,sha256=n0Lx07GYF6YbdIa6AJCLJk4zlAm5CqaeHszvkxxuoI4,139
|
|
54
54
|
tensorcircuit/cloud/abstraction.py,sha256=6aSxbz0MP21jBVdFbSMrvJPLQH117vGz9sSHbMFoodE,14582
|
|
@@ -71,7 +71,7 @@ tensorcircuit/interfaces/tensorflow.py,sha256=U4hZjm-yWxOJ5tqmffk8-tNvOkAltYBJ8Z
|
|
|
71
71
|
tensorcircuit/interfaces/tensortrans.py,sha256=oUxIVpXfANZVRXfPjiGJDzFPiszfBsiY40ydh0BaELE,10364
|
|
72
72
|
tensorcircuit/interfaces/torch.py,sha256=13IFGmWUFoWiSzKAzwp2EkOSxgiwN_oUFxjQb36gimo,5149
|
|
73
73
|
tensorcircuit/results/__init__.py,sha256=3kkIvmjLYQd5ff-emY8l82rpv9mwMZdM2kTLZ9sNfA4,89
|
|
74
|
-
tensorcircuit/results/counts.py,sha256=
|
|
74
|
+
tensorcircuit/results/counts.py,sha256=GUmLvH0WTMotMhv_uyHjtLs6zISDdNiD0f79qsi__Aw,7268
|
|
75
75
|
tensorcircuit/results/readout_mitigation.py,sha256=dVpNvtFZe7n_fDVczKcqYPEepu3fV2qK3u-SfOpTf68,31746
|
|
76
76
|
tensorcircuit/results/qem/__init__.py,sha256=Pw0hcFYNesuPE8uNDm9P8DVTIFCSBqUcIkr6smQYzuM,419
|
|
77
77
|
tensorcircuit/results/qem/benchmark_circuits.py,sha256=LlFuKCDFKihMOhiY6WUZt9QPyoPeQw0SuaczdcSA3oM,3243
|
|
@@ -86,8 +86,8 @@ tensorcircuit/templates/graphs.py,sha256=cPYrxjoem0xZ-Is9dZKAvEzWZL_FejfIRiCEOTA
|
|
|
86
86
|
tensorcircuit/templates/hamiltonians.py,sha256=dp1E5kZDxpE4g7df1EujQHP4sBU6kuGTkF4e49X2IPk,6116
|
|
87
87
|
tensorcircuit/templates/lattice.py,sha256=QH6N4sOegQPZGN-5UjTecy220-8AJLFvo1seh7VD3xA,72851
|
|
88
88
|
tensorcircuit/templates/measurements.py,sha256=pzc5Aa9S416Ilg4aOY77Z6ZhUlYcXnAkQNQFTuHjFFs,10943
|
|
89
|
-
tensorcircuit_nightly-1.3.0.
|
|
90
|
-
tensorcircuit_nightly-1.3.0.
|
|
91
|
-
tensorcircuit_nightly-1.3.0.
|
|
92
|
-
tensorcircuit_nightly-1.3.0.
|
|
93
|
-
tensorcircuit_nightly-1.3.0.
|
|
89
|
+
tensorcircuit_nightly-1.3.0.dev20250905.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
90
|
+
tensorcircuit_nightly-1.3.0.dev20250905.dist-info/METADATA,sha256=g4t78B71bg0mUQzRt4viGjT8bWbI7GnSZopXE6aN7Nw,37856
|
|
91
|
+
tensorcircuit_nightly-1.3.0.dev20250905.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
92
|
+
tensorcircuit_nightly-1.3.0.dev20250905.dist-info/top_level.txt,sha256=9dcuK5488dWpVauYz8cdvx743z_La1h7zIQCsEEgu7o,14
|
|
93
|
+
tensorcircuit_nightly-1.3.0.dev20250905.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|