Skip to content

Commit

Permalink
Branch function def, not function logic.
Browse files Browse the repository at this point in the history
  • Loading branch information
vincentmr committed May 10, 2024
1 parent 5db8624 commit 5112559
Showing 1 changed file with 12 additions and 7 deletions.
19 changes: 12 additions & 7 deletions pennylane/measurements/probs.py
Original file line number Diff line number Diff line change
Expand Up @@ -261,17 +261,22 @@ def _count_samples(indices, batch_size, dim):
num_bins, bin_size = indices.shape[-2:]
interface = qml.math.get_deep_interface(indices)

def _count_samples_core(indices, dim, interface):
if qml.math.is_abstract(indices):
if qml.math.is_abstract(indices):

def _count_samples_core(indices, dim, interface):
return qml.math.array(
[[qml.math.sum(idx == p) for idx in indices] for p in range(dim)],
like=interface,
)
probabilities = qml.math.zeros((dim, num_bins), dtype="float64")
for b, idx in enumerate(indices):
basis_states, counts = qml.math.unique(idx, return_counts=True)
probabilities[basis_states, b] = counts
return probabilities

else:

def _count_samples_core(indices, dim, *_):
probabilities = qml.math.zeros((dim, num_bins), dtype="float64")
for b, idx in enumerate(indices):
basis_states, counts = qml.math.unique(idx, return_counts=True)
probabilities[basis_states, b] = counts
return probabilities

if batch_size is None:
return _count_samples_core(indices, dim, interface) / bin_size
Expand Down

0 comments on commit 5112559

Please sign in to comment.