tensorcircuit-nightly 1.3.0.dev20250902__py3-none-any.whl → 1.3.0.dev20250904__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.

@@ -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(count: ct, normalization: bool = True) -> Tensor:
93
+ def count2vec(
94
+ count: ct, normalization: bool = True, dim: Optional[int] = None
95
+ ) -> Tensor:
93
96
  """
94
- Convert count dictionary to probability vector.
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
- def vec2count(vec: Tensor, prune: bool = False) -> ct:
119
- """
120
- Convert probability vector to count dictionary.
123
+ dim = 2 if dim is None else dim
121
124
 
122
- :param vec: Probability vector
123
- :type vec: Tensor
124
- :param prune: Whether to remove near-zero probabilities, defaults to False
125
- :type prune: bool, optional
126
- :return: Count dictionary
127
- :rtype: ct
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
- >>> vec2count(np.array([0.2, 0.3, 0.1, 0.4]))
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
- from ..quantum import count_vector2dict
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(np.log(vec.shape[0]) / np.log(2) + 1e-9)
139
- c = count_vector2dict(vec, n, key="bin")
140
- if prune is True:
141
- nc = c.copy()
142
- for k, v in c.items():
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 >= 4) and (s2 >= 4):
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-12)
439
- atol = solver_kws.get("atol", 1e-12)
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", 10000)
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
- The ode_backend parameter defaults to 'jaxode' (which uses `jax.experimental.ode.odeint` with a default solver
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
- ode_backend='jaxode'(default) uses `jax.experimental.ode.odeint`; ode_backend='diffrax'
519
- uses `diffrax.diffeqsolve`.
520
- rtol (default: 1e-12) and atol (default: 1e-12) are used to determine how accurately you would
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
- The solver parameter accepts one of {'Tsit5' (default), 'Dopri5', 'Dopri8', 'Kvaerno5'}
523
- and only works when ode_backend='diffrax'.
524
- dt0 (default: 0.01) specifies the initial step size and only works when ode_backend='diffrax'.
525
- max_steps (default: 10000) The maximum number of steps to take before quitting the computation
526
- unconditionally and only works when ode_backend='diffrax'.
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 format
572
- for efficiency.
573
-
574
- The ode_backend parameter defaults to 'jaxode' (which uses `jax.experimental.ode.odeint` with a default solver
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
- ode_backend='jaxode'(default) uses `jax.experimental.ode.odeint`; ode_backend='diffrax'
592
- uses `diffrax.diffeqsolve`.
593
- rtol (default: 1e-12) and atol (default: 1e-12) are used to determine how accurately you would
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
- The solver parameter accepts one of {'Tsit5' (default), 'Dopri5', 'Dopri8', 'Kvaerno5'}
596
- and only works when ode_backend='diffrax'.
597
- dt0 (default: 0.01) specifies the initial step size and only works when ode_backend='diffrax'.
598
- max_steps (default: 10000) The maximum number of steps to take before quitting the computation
599
- unconditionally and only works when ode_backend='diffrax'.
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 *args
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 *args
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.dev20250902
3
+ Version: 1.3.0.dev20250904
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=7bexT-GwAHAQCV3Ypp0cl1nXacrsDLD1GkTD42d00EA,2055
1
+ tensorcircuit/__init__.py,sha256=tdZ3q9sCrbJ-hZFPjEaEQFJguKDs1fexxzi4c5f4DZg,2055
2
2
  tensorcircuit/about.py,sha256=DazTswU2nAwOmASTaDII3L04PVtaQ7oiWPty5YMI3Wk,5267
3
- tensorcircuit/abstractcircuit.py,sha256=0osacPqq7B1EJki-cI1aLYoVRmjFaG9q3XevWMs7SsA,44125
3
+ tensorcircuit/abstractcircuit.py,sha256=VgvQiSeUagCR65kS2qo3TzrEjE7ER2uYGUwzDUzcn-8,44141
4
4
  tensorcircuit/asciiart.py,sha256=neY1OWFwtoW5cHPNwkQHgRPktDniQvdlP9QKHkk52fM,8236
5
- tensorcircuit/basecircuit.py,sha256=61roFjIKvGmRNOUd7tnj8QFAO0zookbFy5934iTBqnw,37555
5
+ tensorcircuit/basecircuit.py,sha256=R8xH-hHiFrTJXYgHnODy74Q4Bfu8e46jI1DS4H_XixY,39804
6
6
  tensorcircuit/channels.py,sha256=CFQxWI-JmkIxexslCBdjp_RSxUbHs6eAJv4LvlXXXCY,28637
7
- tensorcircuit/circuit.py,sha256=mE4b_9xRu3ydoB8iDffdx35V9GZLhAQD_tkjZDLnLjg,39105
8
- tensorcircuit/cons.py,sha256=uYKBeYKkDoJEqJTNrOZPRM31tBtkqe5aAg8GtVidJ1Y,33014
9
- tensorcircuit/densitymatrix.py,sha256=ickqfqB9Btuyo6TwqJJY-RcaIXzPycqliGKMcscslBw,14866
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=x-wA7adVpP7o0AQLt_xYUScFKj8tU_wUOV2mR1GyrPc,29322
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=o21b1_1v7xiubok2v949C0o8ovABgg44jyIGbyJ5cjA,37508
15
+ tensorcircuit/mpscircuit.py,sha256=CPWlsb-kybZE-lh4iUkVMDn45qhHtFHUnxATP6TsaVk,38802
16
16
  tensorcircuit/noisemodel.py,sha256=vzxpoYEZbHVC4a6g7_Jk4dxsHi4wvhpRFwud8b616Qo,11878
17
- tensorcircuit/quantum.py,sha256=68SZ1lXJZSKVr5xe3_uvU-_25GOFnSPGlw4Ziaj1nBI,104681
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=O11G3UYiVAc30GOfwXXmhLXwGZrQ8OVwLTMQMZp_XBc,9414
19
+ tensorcircuit/simplify.py,sha256=EuEyQenFit-hgQhEJecL7t7jJ8m8zQ4KuL_sEvPNu-I,9488
20
20
  tensorcircuit/stabilizercircuit.py,sha256=KbrBVSo2pXnf5JHIrxwRPSPTm7bJVMIcyE4d7-dIfCM,15545
21
- tensorcircuit/timeevol.py,sha256=dmFXDqBFvQI54QK9ViJ9XEVVha9QIE8Bl0sZ1mN85PI,31695
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=PFfiWLkZ6izj34rRTTNeSp0VesSwFPXM_SIDqQ_viLA,69210
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=PjvPbSItMwYpW83sKOmZb2QKz6LjClFIMbAzQWCK124,28013
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=yNBj45W9-VMo-61ihzAAFS5jaj-bHJz0OJB9gZjwYUA,15515
49
- tensorcircuit/backends/pytorch_backend.py,sha256=6nTIG3NO6N2ChzfSOq3Wmti3n5hxkcMwvp7NQ7XEG2w,25582
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=VgigYIGkwluHv1I2dS01cU11VPrZnMaAp2R1sZKOFnk,39714
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=6Dw7SVwnahcLnVlhcU4RfES1CqH2ZVdt0bGeUTYaij8,6512
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.dev20250902.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
90
- tensorcircuit_nightly-1.3.0.dev20250902.dist-info/METADATA,sha256=8tMI_KJm_vgx2D_2BYI7-pHeBbFyd9DRb_rWmRFGAMw,37856
91
- tensorcircuit_nightly-1.3.0.dev20250902.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
92
- tensorcircuit_nightly-1.3.0.dev20250902.dist-info/top_level.txt,sha256=9dcuK5488dWpVauYz8cdvx743z_La1h7zIQCsEEgu7o,14
93
- tensorcircuit_nightly-1.3.0.dev20250902.dist-info/RECORD,,
89
+ tensorcircuit_nightly-1.3.0.dev20250904.dist-info/licenses/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
90
+ tensorcircuit_nightly-1.3.0.dev20250904.dist-info/METADATA,sha256=kB9_IqE_nXFhQ2aE6FhInll4JZAUeFrwZxHvaDpOFF0,37856
91
+ tensorcircuit_nightly-1.3.0.dev20250904.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
92
+ tensorcircuit_nightly-1.3.0.dev20250904.dist-info/top_level.txt,sha256=9dcuK5488dWpVauYz8cdvx743z_La1h7zIQCsEEgu7o,14
93
+ tensorcircuit_nightly-1.3.0.dev20250904.dist-info/RECORD,,