def test_expval_pauli_qargs(self, qubits): """Test expectation_value method for Pauli op""" seed = 1020 op = random_pauli(2, seed=seed) state = random_statevector(2**3, seed=seed) target = state.expectation_value(op.to_matrix(), qubits) expval = state.expectation_value(op, qubits) self.assertAlmostEqual(expval, target)
def test_evolve_clifford_qargs(self): """Test evolve method for random Clifford""" cliff = random_clifford(3, seed=10) op = Operator(cliff) pauli = random_pauli(5, seed=10) qargs = [3, 0, 1] value = Operator(pauli.evolve(cliff, qargs=qargs)) target = Operator(pauli).compose(op.adjoint(), qargs=qargs).dot(op, qargs=qargs) self.assertEqual(value, target)
def test_expval_random(self, num_qubits): """Test expectation_value method of random Cliffords""" for _ in range(self.samples): cliff = random_clifford(num_qubits, seed=self.rng) op = random_pauli(num_qubits, seed=self.rng) qc = cliff.to_circuit() stab = StabilizerState(cliff) exp_val = stab.expectation_value(op) target = Statevector(qc).expectation_value(op) self.assertAlmostEqual(exp_val, target)
def test_expval_random_subsystem(self, num_qubits): """Test expectation_value method of random Cliffords and a subsystem""" for _ in range(self.samples): cliff = random_clifford(num_qubits, seed=self.rng) op = random_pauli(2, seed=self.rng) qargs = np.random.choice(num_qubits, size=2, replace=False) qc = cliff.to_circuit() stab = StabilizerState(cliff) exp_val = stab.expectation_value(op, qargs) target = Statevector(qc).expectation_value(op, qargs) self.assertAlmostEqual(exp_val, target)
def test_init_pauli(self, num_qubits): """Test initialization from pauli.""" pauli = random_pauli(num_qubits, seed=self.rng) stab1 = StabilizerState(pauli) stab2 = StabilizerState(stab1) self.assertEqual(stab1, stab2)