Skip to content

Commit f08b344

Browse files
authored
Avoid run_sweep_sample when subcircuits exist (#3745)
1 parent d57fa67 commit f08b344

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

cirq/sim/density_matrix_simulator.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,9 @@ def _run(
168168
resolved_circuit = protocols.resolve_parameters(circuit, param_resolver)
169169
check_all_resolved(resolved_circuit)
170170

171-
if circuit.are_all_measurements_terminal():
171+
if circuit.are_all_measurements_terminal() and not any(
172+
circuit.findall_operations(lambda op: isinstance(op, circuits.CircuitOperation))
173+
):
172174
return self._run_sweep_sample(resolved_circuit, repetitions)
173175
return self._run_sweep_repeat(resolved_circuit, repetitions)
174176

cirq/sim/density_matrix_simulator_test.py

+12
Original file line numberDiff line numberDiff line change
@@ -1275,6 +1275,18 @@ def test_simulate_noise_with_terminal_measurements():
12751275
assert result1 == result2
12761276

12771277

1278+
def test_simulate_noise_with_subcircuit_measurements():
1279+
q = cirq.LineQubit(0)
1280+
circuit1 = cirq.Circuit(cirq.measure(q))
1281+
circuit2 = cirq.Circuit(cirq.CircuitOperation(cirq.Circuit(cirq.measure(q)).freeze()))
1282+
1283+
simulator = cirq.DensityMatrixSimulator(noise=cirq.X)
1284+
result1 = simulator.run(circuit1, repetitions=10)
1285+
result2 = simulator.run(circuit2, repetitions=10)
1286+
1287+
assert result1 == result2
1288+
1289+
12781290
def test_density_matrix_copy():
12791291
sim = cirq.DensityMatrixSimulator()
12801292

0 commit comments

Comments
 (0)