qfunc-0.1.0.0
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Lib.Gates

Description

Module containing unitary gates and their matrix representations.

Synopsis

Unitary gates

pauliX :: QBit -> QM QBit Source #

Pauli-X gate

\[ \text{X} = \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \]

pauliY :: QBit -> QM QBit Source #

Pauli-Y gate

\[ \text{Y} = \begin{bmatrix} 0 & -i \\ i & 0 \end{bmatrix} \]

pauliZ :: QBit -> QM QBit Source #

Pauli-Z gate

\[ \text{Z} = \begin{bmatrix} 1 & 0 \\ 0 & -1 \end{bmatrix} \]

hadamard :: QBit -> QM QBit Source #

Hadamard gate

\[ \text{X} = \frac1{\sqrt2} \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \]

phase :: QBit -> QM QBit Source #

Phase gate

\[ \text{S} = \begin{bmatrix} 1 & 0 \\ 0 & i \end{bmatrix} \]

phasePi8 :: QBit -> QM QBit Source #

Pi/8 gate (T gate)

\[ \text{T} = \begin{bmatrix} 1 & 0 \\ 0 & e^{i\pi/4} \end{bmatrix} \]

cnot :: (QBit, QBit) -> QM (QBit, QBit) Source #

CNOT gate

\[ \text{CNOT} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} \]

identity :: QBit -> QM QBit Source #

Identity gate

\[ \text{I} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} \]

swap :: (QBit, QBit) -> QM (QBit, QBit) Source #

SWAP gate

\[ \text{SWAP} = \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} \]

tdagger :: QBit -> QM QBit Source #

Hermetian adjoint of T gate (phasePi8)

fredkin :: (QBit, QBit, QBit) -> QM (QBit, QBit, QBit) Source #

Fredkin gate

toffoli :: (QBit, QBit, QBit) -> QM (QBit, QBit, QBit) Source #

Toffoli gate

\[ \begin{bmatrix} 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 \\ 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 \end{bmatrix} \]

urot :: Int -> QBit -> QM QBit Source #

UROT gate

crot :: Int -> (QBit, QBit) -> QM (QBit, QBit) Source #

Controlled UROT

qft :: [QBit] -> QM [QBit] Source #

Quantum fourier transform