Skip to content

two_qubit_gates_merger

TwoQubitGatesMerger

Bases: Merger

Source code in opensquirrel/passes/merger/two_qubit_gates_merger.py
class TwoQubitGatesMerger(Merger):
    def merge(self, ir: IR, qubit_register_size: int) -> None:
        """Merge all consecutive two-qubit gates in the circuit.

        Args:
            ir (IR): Intermediate representation of the circuit.
            qubit_register_size (int): Size of the qubit register

        """
        graph = build_graph(ir)
        groups = group_gates(graph)
        statements = []

        for group in groups:
            statement_indices, qubit_indices = group
            if len(qubit_indices) == 2:
                statement = _merge_gate_group(ir, group)
            else:
                statement = ir.statements[statement_indices.pop()]

            if not (isinstance(statement, Gate) and statement.is_identity()):
                statements.append(statement)

        ir.statements = statements

merge

merge(ir: IR, qubit_register_size: int) -> None

Merge all consecutive two-qubit gates in the circuit.

Parameters:

Name Type Description Default
ir IR

Intermediate representation of the circuit.

required
qubit_register_size int

Size of the qubit register

required
Source code in opensquirrel/passes/merger/two_qubit_gates_merger.py
def merge(self, ir: IR, qubit_register_size: int) -> None:
    """Merge all consecutive two-qubit gates in the circuit.

    Args:
        ir (IR): Intermediate representation of the circuit.
        qubit_register_size (int): Size of the qubit register

    """
    graph = build_graph(ir)
    groups = group_gates(graph)
    statements = []

    for group in groups:
        statement_indices, qubit_indices = group
        if len(qubit_indices) == 2:
            statement = _merge_gate_group(ir, group)
        else:
            statement = ir.statements[statement_indices.pop()]

        if not (isinstance(statement, Gate) and statement.is_identity()):
            statements.append(statement)

    ir.statements = statements