Quantum operators¶
PennyLane supports a wide variety of quantum operators—such as gates, noisy channels, state preparations and measurements. These operators can be used in quantum functions, like shown in the following example:
import pennylane as qml
def my_quantum_function(x, y):
qml.RZ(x, wires=0)
qml.CNOT(wires=[0,1])
qml.RY(y, wires=1)
qml.AmplitudeDamping(0.1, wires=0)
return qml.expval(qml.PauliZ(1))
This quantum function uses the RZ
,
CNOT
,
RY
gates, the
AmplitudeDamping
noisy channel as well as the
PauliZ
observable.
Functions applied to operators extract information (such as the matrix representation) or transform operators (like turning a gate into a controlled gate).
PennyLane supports the following operators and operator functions:
Operator functions¶
Various functions and transforms are available for manipulating operators, and extracting information. These can be broken down into two main categories:
Operator to Operator functions¶

Create the adjoint of an Operator or a function that applies the adjoint of the provided function. 

Create a method that applies a controlled version of the provided op. 

Condition a quantum operation on the results of midcircuit qubit measurements. 

Take the exponential of an Operator times a coefficient. 

Construct an operator which is the sum of the given operators. 

Raise an Operator to a power. 

Construct an operator which represents the generalized product of the operators provided. 

Construct an operator which is the scalar product of the given scalar and operator provided. 

Returns the generator of an operation. 

Changes the wires of an operator, tape, qnode or quantum function according to the given wire map. 

Returns the dot product between the 

This method is dispatched and its functionality depends on the type of the input 
These operator functions act on operators to produce new operators.
>>> op = qml.prod(qml.PauliX(0), qml.PauliZ(1))
>>> op = qml.sum(qml.Hadamard(0), op)
>>> op = qml.s_prod(1.2, op)
>>> op
1.2*(Hadamard(wires=[0]) + (PauliX(wires=[0]) @ PauliZ(wires=[1])))
Operator to Other functions¶

The matrix representation of an operation or quantum circuit. 

The eigenvalues of one or more operations. 

Check if two operations are commuting using a lookup table. 

Check if the operation is hermitian. 

Check if the operation is unitary. 

Simplifies an operator, tape, qnode or quantum function by reducing its arithmetic depth or number of rotation parameters. 
These operator functions act on operators and return other data types. All operator functions can be used on instantiated operators.
>>> op = qml.RX(0.54, wires=0)
>>> qml.matrix(op)
[[0.9637709+0.j 0. 0.26673144j]
[0. 0.26673144j 0.9637709+0.j ]]
Some operator functions can also be used in a functional form:
>>> x = torch.tensor(0.6, requires_grad=True)
>>> matrix_fn = qml.matrix(qml.RX)
>>> matrix_fn(x, wires=0)
tensor([[0.9553+0.0000j, 0.00000.2955j],
[0.00000.2955j, 0.9553+0.0000j]], grad_fn=<StackBackward0>)
In the functional form, they are usually differentiable with respect to gate arguments:
>>> loss = torch.real(torch.trace(matrix_fn(x, wires=0)))
>>> loss.backward()
>>> x.grad
tensor(0.2955)
Some operator transforms can also act on multiple operators, by passing quantum functions, QNodes or tapes:
>>> def circuit(theta):
... qml.RX(theta, wires=1)
... qml.PauliZ(wires=0)
>>> qml.matrix(circuit)(np.pi / 4)
array([[ 0.92387953+0.j, 0.+0.j , 0.0.38268343j, 0.+0.j],
[ 0.+0.j, 0.92387953+0.j, 0.+0.j, 0. +0.38268343j],
[ 0. 0.38268343j, 0.+0.j, 0.92387953+0.j, 0.+0.j],
[ 0.+0.j, 0.+0.38268343j, 0.+0.j, 0.92387953+0.j]])
Matrix to Operator functions¶

Decomposes a Hermitian matrix into a linear combination of Pauli operators. 
These functions take the matrix representation of an operator and return the equivalent native PennyLane operator.
>>> mat = np.array([[1, 1], [1, 1]])
>>> h = qml.pauli_decompose(mat)
>>> type(h)
<class 'pennylane.ops.qubit.hamiltonian.Hamiltonian'>
>>> print(h)
(1.0) [X0]
+ (1.0) [Z0]
Qubit operators¶
Nonparametrized gates¶
The identity observable \(\I\). 

The Hadamard operator 

The Pauli X operator 

The Pauli Y operator 

The Pauli Z operator 

The singlequbit phase gate 

The singlequbit T gate 

The singlequbit SquareRoot X operator. 

The controlledNOT operator 

The controlledZ operator 

The controlledY operator 

The swap operator 

The iswap operator 

An echoed RZX(pi/2) gate. 

The square root of iswap operator. 

alias of 

The controlledswap operator 

Toffoli (controlledcontrolledX) gate. 

Apply a Pauli X gate controlled on an arbitrary computational basis state. 

The Barrier operator, used to separate the compilation process into blocks or as a visual tool. 

The wire cut operation, used to manually mark locations for wire cuts. 
Parametrized gates¶
Arbitrary single qubit rotation 

The single qubit X rotation 

The single qubit Y rotation 

The single qubit Z rotation 

Arbitrary multi Z rotation. 

Arbitrary Pauli word rotation. 

Arbitrary single qubit local phase shift 

A qubit controlled phase shift. 

alias of 

A qubit controlled phase shift. 

A qubit controlled phase shift. 

A qubit controlled phase shift. 

The controlledRX operator 

The controlledRY operator 

The controlledRZ operator 

The controlledRot operator 

U1 gate. 

U2 gate. 

Arbitrary single qubit unitary. 

Ising XX coupling gate 

Ising (XX + YY) coupling gate 

Ising YY coupling gate 

Ising ZZ coupling gate 

Phase SWAP gate 
Quantum chemistry gates¶
Single excitation rotation. 

Single excitation rotation with positive phaseshift outside the rotation subspace. 

Single excitation rotation with negative phaseshift outside the rotation subspace. 

Double excitation rotation. 

Double excitation rotation with positive phaseshift outside the rotation subspace. 

Double excitation rotation with negative phaseshift outside the rotation subspace. 

Spinadapted spatial orbital rotation. 

Fermionic SWAP rotation. 
Electronic Hamiltonians built independently using
OpenFermion tools can be readily converted to a
PennyLane observable using the import_operator()
function.
Gates constructed from a matrix¶
Apply an arbitrary fixed unitary matrix. 

Apply an arbitrary fixed unitary to 

Apply an arbitrary fixed diagonal unitary matrix. 

Gate from the group \(SU(N)\) with \(N=2^n\) for \(n\) qubits. 
Gates performing arithmetics¶
Apply the 

Apply a 

Apply a controlled Pauli X gate using integer comparison as the condition. 
State preparation¶
Prepares a single computational basis state. 

Prepare subsystems using the given ket vector in the computational basis. 

Prepare subsystems using the given density matrix. 
Noisy channels¶
Singlequbit amplitude damping error channel. 

Singlequbit generalized amplitude damping error channel. 

Singlequbit phase damping error channel. 

Singlequbit symmetrically depolarizing error channel. 

Singlequbit bit flip (Pauli \(X\)) error channel. 

Singlequbit bit flip (Pauli \(Z\)) error channel. 

Singlequbit Reset error channel. 

Pauli operator error channel for an arbitrary number of qubits. 

Apply an arbitrary fixed quantum channel. 

Thermal relaxation error channel. 
Observables¶
The Hadamard operator 

An arbitrary Hermitian observable. 

The identity observable \(\I\). 

The Pauli X operator 

The Pauli Y operator 

The Pauli Z operator 

Observable corresponding to the computational basis state projector \(P=\ket{i}\bra{i}\). 

Operator representing a Hamiltonian. 

A Hamiltonian represented directly as a sparse matrix in Compressed Sparse Row (CSR) format. 
ContinuousVariable (CV) operators¶
If you would like to learn more about the CV model of quantum computing, check out the quantum photonics page of the Strawberry Fields documentation.
CV gates¶
The identity observable \(\I\). 

Beamsplitter interaction. 

Controlled addition operation. 

Controlled phase operation. 

CrossKerr interaction. 

Cubic phase shift. 

Phase space displacement. 

A linear interferometer transforming the bosonic operators according to the unitary matrix \(U\). 

Kerr interaction. 

Quadratic phase shift. 

Phase space rotation. 

Phase space squeezing. 

Phase space twomode squeezing. 
CV state preparation¶
Prepares a cat state. 

Prepares a coherent state. 

Prepares a displaced squeezed vacuum state. 

Prepare subsystems using the given density matrix in the Fock basis. 

Prepares a single Fock state. 

Prepare subsystems using the given ket vector in the Fock basis. 

Prepare subsystems in a given Gaussian state. 

Prepares a squeezed vacuum state. 

Prepares a thermal state. 
CV observables¶
The number state observable \(\ket{n}\bra{n}\). 

The identity observable \(\I\). 

The photon number observable \(\langle \hat{n}\rangle\). 

The tensor product of the 

The momentum quadrature observable \(\hat{p}\). 

An arbitrary secondorder polynomial observable. 

The generalized quadrature observable \(\x_\phi = \x cos\phi+\p\sin\phi\). 

The position quadrature observable \(\hat{x}\). 
Qutrit operators¶
Qutrit nonparametrized gates¶
Qutrit gates constructed from a matrix¶
Apply an arbitrary, fixed unitary matrix. 

Apply an arbitrary fixed unitary to 
Qutrit Observables¶
An arbitrary Hermitian observable for qutrits. 

The GellMann observables for qutrits 
Pulselevel operators¶
If you would like to learn more about the implementation of pulselevel control in PennyLane, see the
pulse
module documentation.
Pulse operator¶
Parametrized evolution gate, created by passing a 

Callable object holding the information representing a parametrized Hamiltonian. 