def _get_xmon_optimizers_part_cz( tolerance: float, tabulation: Optional[GateTabulation] ) -> List[Callable[['cirq.Circuit'], None]]: if tabulation is not None: # coverage: ignore raise ValueError("Gate tabulation not supported for xmon") return [ convert_to_xmon_gates.ConvertToXmonGates().optimize_circuit, optimizers.MergeInteractions(tolerance=tolerance, allow_partial_czs=True).optimize_circuit, lambda c: optimizers.merge_single_qubit_gates_into_phxz(c, tolerance), *_get_common_cleanup_optimizers(tolerance=tolerance), ]
from cirq import circuits, devices, optimizers from cirq.google.optimizers import convert_to_xmon_gates if TYPE_CHECKING: import cirq _TOLERANCE = 1e-5 def _merge_rots(c: 'cirq.Circuit'): return optimizers.merge_single_qubit_gates_into_phased_x_z(c, _TOLERANCE) _OPTIMIZERS: List[Callable[['cirq.Circuit'], None]] = [ convert_to_xmon_gates.ConvertToXmonGates().optimize_circuit, optimizers.MergeInteractions(tolerance=_TOLERANCE, allow_partial_czs=False).optimize_circuit, _merge_rots, optimizers.EjectPhasedPaulis(tolerance=_TOLERANCE).optimize_circuit, optimizers.EjectZ(tolerance=_TOLERANCE).optimize_circuit, optimizers.DropNegligible(tolerance=_TOLERANCE).optimize_circuit, ] _OPTIMIZERS_PART_CZ: List[Callable[['cirq.Circuit'], None]] = [ convert_to_xmon_gates.ConvertToXmonGates().optimize_circuit, optimizers.MergeInteractions(tolerance=_TOLERANCE, allow_partial_czs=True).optimize_circuit, _merge_rots, optimizers.EjectPhasedPaulis(tolerance=_TOLERANCE).optimize_circuit, optimizers.EjectZ(tolerance=_TOLERANCE).optimize_circuit,
def decompose_operation(self, operation: 'cirq.Operation') -> 'cirq.OP_TREE': return convert_to_xmon_gates.ConvertToXmonGates().convert(operation)