Source code for bqskit.ir.gates.constant.unitary

"""This module implements the ConstantUnitaryGate."""
from __future__ import annotations

from typing import Sequence

from bqskit.ir.gates.constantgate import ConstantGate
from bqskit.qis.unitary.unitarymatrix import UnitaryLike
from bqskit.qis.unitary.unitarymatrix import UnitaryMatrix


[docs] class ConstantUnitaryGate(ConstantGate): """An arbitrary constant unitary operator."""
[docs] def __init__( self, utry: UnitaryLike, radixes: Sequence[int] = [], ) -> None: """ Construct a constant unitary operator. Args: utry (UnitaryLike): The operation as a unitary matrix. radixes (Sequence[int]): The number of orthogonal states for each qudit this gate will act on. Defaults to qubits. """ self._utry = UnitaryMatrix(utry, radixes) self._num_qudits = self._utry.num_qudits self._radixes = self._utry.radixes
def __eq__(self, other: object) -> bool: return ( isinstance(other, ConstantUnitaryGate) and self._utry == other._utry ) def __hash__(self) -> int: return hash(self._utry)