def optimize_circuit(self, circuit: _circuit.Circuit) -> None:
     deletions: List[Tuple[int, ops.Operation]] = []
     for moment_index, moment in enumerate(circuit):
         for op in moment.operations:
             if op is not None and protocols.trace_distance_bound(op) <= self.tolerance:
                 deletions.append((moment_index, op))
     circuit.batch_remove(deletions)
Example #2
0
 def optimize_circuit(self, circuit: _circuit.Circuit) -> None:
     deletions = []  # type: List[Tuple[int, ops.Operation]]
     for moment_index, moment in enumerate(circuit):
         for op in moment.operations:
             bounded = self.extensions.try_cast(ops.BoundedEffect, op)
             if (bounded is not None
                     and bounded.trace_distance_bound() <= self.tolerance):
                 deletions.append((moment_index, op))
     circuit.batch_remove(deletions)
Example #3
0
 def optimize_circuit(self, circuit: _circuit.Circuit) -> None:
     deletions = []  # type: List[Tuple[int, ops.Operation]]
     for moment_index, moment in enumerate(circuit):
         for op in moment.operations:
             bounded = self.extensions.try_cast(ops.BoundedEffect, op)
             if (bounded is not None and
                     bounded.trace_distance_bound() <= self.tolerance):
                 deletions.append((moment_index, op))
     circuit.batch_remove(deletions)