From 58930223b098f2d696a0b40a542a382cc3ec96e9 Mon Sep 17 00:00:00 2001 From: mattia-robbiano Date: Wed, 18 Feb 2026 10:05:58 +0100 Subject: [PATCH] fix: forgot to reset state object in computing different observables --- src/qibotn/backends/quimb.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/qibotn/backends/quimb.py b/src/qibotn/backends/quimb.py index 4c33c1a..6bc97a3 100644 --- a/src/qibotn/backends/quimb.py +++ b/src/qibotn/backends/quimb.py @@ -241,22 +241,22 @@ def exp_value_observable_symbolic( "within a single term (e.g. (0,0,0) is invalid).", ) - ket = self._qibo_circuit_to_quimb( + circuit_tn = self._qibo_circuit_to_quimb( circuit, quimb_circuit_type=self.circuit_ansatz, gate_opts={"max_bond": self.max_bond_dimension, "cutoff": self.svd_cutoff}, ).psi - - bra = ket.copy().H + bra = circuit_tn.copy().H expectation_value = 0.0 for opstr, sites, coeff in zip(operators_list, sites_list, coeffs_list): + ket = circuit_tn.copy() coeff = coeff.real for label, site in zip(opstr, sites): op_matrix = qu.pauli(label.upper()) ket.gate_(op_matrix, site) - exp_values = (bra & ket).contract(optimize="auto-hq").real - expectation_value = expectation_value + coeff * exp_values + exp_value = (bra & ket).contract(optimize="auto-hq").real + expectation_value = expectation_value + coeff * exp_value return expectation_value