Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 6 additions & 20 deletions grove/pyvqe/vqe.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,21 +225,7 @@ def expectation(pyquil_prog: Program,
pauli_sum = PauliSum([pauli_sum])

if samples is None:
operator_progs = []
operator_coeffs = []
for p_term in pauli_sum.terms:
op_prog = Program()
for qindex, op in p_term:
op_prog.inst(STANDARD_GATES[op](qindex))
operator_progs.append(op_prog)
operator_coeffs.append(p_term.coefficient)

result_overlaps = WavefunctionSimulator().expectation(pyquil_prog, pauli_sum.terms)
result_overlaps = list(result_overlaps)
assert len(result_overlaps) == len(operator_progs),\
"""Somehow we didn't get the correct number of results back from the QVM"""
expectation = sum(list(map(lambda x: x[0] * x[1],
zip(result_overlaps, operator_coeffs))))
expectation = WavefunctionSimulator().expectation(pyquil_prog, pauli_sum)
return expectation.real
else:
if not isinstance(samples, int):
Expand All @@ -263,11 +249,11 @@ def expectation(pyquil_prog: Program,
elif gate == 'Y':
meas_basis_change.inst(RX(np.pi / 2, index))

meas_outcome = \
expectation_from_sampling(pyquil_prog + meas_basis_change,
qubits_to_measure,
qc,
samples)
meas_outcome = \
expectation_from_sampling(pyquil_prog + meas_basis_change,
qubits_to_measure,
qc,
samples)

expectation += term.coefficient * meas_outcome

Expand Down