Source code for torchquantum.operator.standard_gates.rz
from ..op_types import *
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 RZ(DiagonalOperation, metaclass=ABCMeta):
"""Class for RZ Gate."""
num_params = 1
num_wires = 1
op_name = "rz"
func = staticmethod(tqf.rz)
@classmethod
def _matrix(cls, params):
return tqf.rz_matrix(params)
[docs]class MultiRZ(DiagonalOperation, metaclass=ABCMeta):
"""Class for Multi-qubit RZ Gate."""
num_params = 1
num_wires = AnyWires
op_name = "multirz"
func = staticmethod(tqf.multirz)
@classmethod
def _matrix(cls, params, n_wires):
return tqf.multirz_matrix(params, n_wires)
[docs]class RZZ(DiagonalOperation, metaclass=ABCMeta):
"""Class for RZZ Gate."""
num_params = 1
num_wires = 2
op_name = "rzz"
func = staticmethod(tqf.rzz)
@classmethod
def _matrix(cls, params):
return tqf.rzz_matrix(params)
[docs]class RZX(Operation, metaclass=ABCMeta):
"""Class for RZX Gate."""
num_params = 1
num_wires = 2
op_name = "rzx"
func = staticmethod(tqf.rzx)
@classmethod
def _matrix(cls, params):
return tqf.rzx_matrix(params)
[docs]class CRZ(Operation, metaclass=ABCMeta):
"""Class for Controlled Rotation Z gate."""
num_params = 1
num_wires = 2
op_name = "crz"
func = staticmethod(tqf.crz)
@classmethod
def _matrix(cls, params):
return tqf.crz_matrix(params)