def optimization_at(self, circuit, index, op): converted = self.convert(op) if len(converted) == 1 and converted[0] is op: return None return PointOptimizationSummary(clear_span=1, new_operations=converted, clear_qubits=op.qubits)
def optimization_at(self, circuit, index, op): decomposition = self._decompose(op) if decomposition is op: return None return PointOptimizationSummary(clear_span=1, clear_qubits=op.qubits, new_operations=decomposition)
def optimization_at(self, circuit, index, op): if not (isinstance(op.gate, ops.BoundedEffectGate) and op.gate.trace_distance_bound() <= self.tolerance): return None return PointOptimizationSummary( clear_span=1, new_operations=(), clear_qubits=op.qubits)
def optimization_at( self, circuit: 'cirq.Circuit', index: int, op: 'cirq.Operation') -> Optional['cirq.PointOptimizationSummary']: converted = self.convert(op) if len(converted) == 1 and converted[0] is op: return None return PointOptimizationSummary(clear_span=1, new_operations=converted, clear_qubits=op.qubits)
def optimization_at(self, circuit: Circuit, index: int, op: ops.Operation ) -> Optional[PointOptimizationSummary]: converted = self.convert(op) if converted is op: return None return PointOptimizationSummary( clear_span=1, new_operations=converted, clear_qubits=op.qubits)
def optimization_at(self, circuit, index, op): decomposition = protocols.decompose(op, keep=self.no_decomp, on_stuck_raise=None) if decomposition is op: return None return PointOptimizationSummary( clear_span=1, clear_qubits=op.qubits, new_operations=decomposition)
def optimization_at( self, circuit: 'cirq.Circuit', index: int, op: 'cirq.Operation') -> Optional['cirq.PointOptimizationSummary']: decomposition = protocols.decompose(op, keep=self.no_decomp, on_stuck_raise=None) if decomposition == [op]: return None return PointOptimizationSummary(clear_span=1, clear_qubits=op.qubits, new_operations=decomposition)
def optimization_at( self, circuit: Circuit, index: int, op: ops.Operation) -> Optional[PointOptimizationSummary]: converted = protocols.decompose( op, intercepting_decomposer=self._decompose_two_qubit_unitaries, keep=self._keep, on_stuck_raise=(None if self.ignore_failures else self._on_stuck_raise)) if converted == [op]: return None return PointOptimizationSummary(clear_span=1, new_operations=converted, clear_qubits=op.qubits)
def optimization_at( self, circuit: Circuit, index: int, op: ops.Operation) -> Optional[PointOptimizationSummary]: if len(op.qubits) != 1: return None q = op.qubits[0] indices, operations = _scan_single_qubit_ops(circuit, index, q) if not operations: return None single_op = _merge_into_matrix_gate_op(q, operations) return PointOptimizationSummary(clear_span=max(indices) + 1 - index, clear_qubits=op.qubits, new_operations=[single_op])
def optimization_at( self, circuit: Circuit, index: int, op: ops.Operation) -> Optional[PointOptimizationSummary]: if len(op.qubits) != 1: return None indices, gates = self._scan_single_qubit_ops(circuit, index, op.qubits[0]) if not gates: return None # Replace the gates with a max-2-op XY + Z construction. operations = self._merge_rotations(op.qubits[0], gates) return PointOptimizationSummary(clear_span=max(indices) + 1 - index, clear_qubits=op.qubits, new_operations=operations)