Source code for torchquantum.operator.standard_gates.sx
from ..op_types import Operation
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 SX(Operation, metaclass=ABCMeta):
"""Class for SX Gate."""
num_params = 0
num_wires = 1
eigvals = torch.tensor([1, 1j], dtype=C_DTYPE)
op_name = "sx"
matrix = mat_dict["sx"]
func = staticmethod(tqf.sx)
@classmethod
def _matrix(cls, params):
return cls.matrix
@classmethod
def _eigvals(cls, params):
return cls.eigvals
class CSX(Operation, metaclass=ABCMeta):
"""Class for CSX Gate."""
num_params = 0
num_wires = 2
op_name = "csx"
matrix = mat_dict["csx"]
func = staticmethod(tqf.csx)
@classmethod
def _matrix(cls, params):
return cls.matrix
class C3SX(Operation, metaclass=ABCMeta):
"""Class for C3SX Gate."""
num_params = 0
num_wires = 4
op_name = "c3sx"
matrix = mat_dict["c3sx"]
func = staticmethod(tqf.c3sx)
@classmethod
def _matrix(cls, params):
return cls.matrix
class SXDG(Operation, metaclass=ABCMeta):
"""Class for SXDG Gate."""
num_params = 0
num_wires = 1
op_name = "sxdg"
matrix = mat_dict["sxdg"]
func = staticmethod(tqf.sxdg)
@classmethod
def _matrix(cls, params):
return cls.matrix