Source code for torchquantum.operator.standard_gates.s

from ..op_types import Operation, DiagonalOperation
from abc import ABCMeta
from torchquantum.macro import C_DTYPE
import torchquantum as tq
import torch
from torchquantum.functional import mat_dict
import torchquantum.functional as tqf


[docs]class S(DiagonalOperation, metaclass=ABCMeta): """Class for S Gate.""" num_params = 0 num_wires = 1 eigvals = torch.tensor([1, 1j], dtype=C_DTYPE) op_name = "s" matrix = mat_dict["s"] func = staticmethod(tqf.s) @classmethod def _matrix(cls, params): return cls.matrix @classmethod def _eigvals(cls, params): return cls.eigvals
class SDG(Operation, metaclass=ABCMeta): """Class for SDG Gate.""" num_params = 0 num_wires = 1 op_name = "sdg" matrix = mat_dict["sdg"] func = staticmethod(tqf.sdg) @classmethod def _matrix(cls, params): return cls.matrix class CS(Operation, metaclass=ABCMeta): """Class for CS Gate.""" num_params = 0 num_wires = 2 op_name = "cs" matrix = mat_dict["cs"] eigvals = torch.tensor([1, 1, 1, 1j], dtype=C_DTYPE) func = staticmethod(tqf.cs) @classmethod def _matrix(cls, params): return cls.matrix @classmethod def _eigvals(cls, params): return cls.eigvals class CSDG(DiagonalOperation, metaclass=ABCMeta): """Class for CS Dagger Gate.""" num_params = 0 num_wires = 2 op_name = "csdg" matrix = mat_dict["csdg"] eigvals = torch.tensor([1, 1, 1, -1j], dtype=C_DTYPE) func = staticmethod(tqf.csdg) @classmethod def _matrix(cls, params): return cls.matrix @classmethod def _eigvals(cls, params): return cls.eigvals