Skip to content

Commit b86dd63

Browse files
Ignore operations on more than 10 qubits in drop_negligible_operations transformer (quantumlib#5386)
* Ignore operations on more than 10 qubits in drop_negligible_operations transformer * Assert same circuits Co-authored-by: Cirq Bot <[email protected]>
1 parent 6134c8d commit b86dd63

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

cirq/transformers/drop_negligible_operations.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,11 @@ def drop_negligible_operations(
4848

4949
def map_func(op: 'cirq.Operation', _: int) -> 'cirq.OP_TREE':
5050
return (
51-
op if protocols.is_measurement(op) or protocols.trace_distance_bound(op) > atol else []
51+
op
52+
if protocols.num_qubits(op) > 10
53+
or protocols.is_measurement(op)
54+
or protocols.trace_distance_bound(op) > atol
55+
else []
5256
)
5357

5458
return transformer_primitives.map_operations(

cirq/transformers/drop_negligible_operations_test.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,3 +94,16 @@ def test_recursively_runs_inside_circuit_ops_deep():
9494
cirq.testing.assert_same_circuits(
9595
cirq.drop_negligible_operations(c_orig, context=context, atol=0.001), c_expected
9696
)
97+
98+
99+
def test_ignores_large_ops():
100+
qnum = 20
101+
qubits = cirq.LineQubit.range(qnum)
102+
subcircuit = cirq.FrozenCircuit(cirq.X.on_each(*qubits))
103+
circuit = cirq.Circuit(
104+
cirq.CircuitOperation(subcircuit).repeat(10), cirq.measure(*qubits, key='out')
105+
)
106+
cirq.testing.assert_same_circuits(
107+
circuit,
108+
cirq.drop_negligible_operations(circuit, context=cirq.TransformerContext(deep=True)),
109+
)

0 commit comments

Comments
 (0)