You are viewing the API reference for an old version of Qiskit. Switch to latest version

# PauliEvolutionGate

PauliEvolutionGate(operator, time=1.0, label=None, synthesis=None) GitHub(opens in a new tab)

Time-evolution of an operator consisting of Paulis.

For an operator $H$ consisting of Pauli terms and (real) evolution time $t$ this gate implements

$U(t) = e^{-itH}.$

This gate serves as a high-level definition of the evolution and can be synthesized into a circuit using different algorithms.

The evolution gates are related to the Pauli rotation gates by a factor of 2. For example the time evolution of the Pauli $X$ operator is connected to the Pauli $X$ rotation $R_X$ by

$U(t) = e^{-itX} = R_X(2t).$

Examples:

from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import PauliEvolutionGate
from qiskit.opflow import I, Z, X

# build the evolution gate
operator = (Z ^ Z) - 0.1 * (X ^ I)
evo = PauliEvolutionGate(operator, time=0.2)

# plug it into a circuit
circuit = QuantumCircuit(2)
circuit.append(evo, range(2))
print(circuit.draw())

The above will print (note that the -0.1 coefficient is not printed!):

     ┌──────────────────────────┐
q_0: ┤0                         ├
│  exp(-it (ZZ + XI))(0.2) │
q_1: ┤1                         ├
└──────────────────────────┘

References:

[1] G. Li et al. Paulihedral: A Generalized Block-Wise Compiler Optimization Framework For Quantum Simulation Kernels (2021). [arXiv:2109.03371(opens in a new tab)]

Parameters

• operator (Pauli |PauliOp |SparsePauliOp |PauliSumOp | list) – The operator to evolve. Can also be provided as list of non-commuting operators where the elements are sums of commuting operators. For example: [XY + YX, ZZ + ZI + IZ, YY].
• time (Union[int, float, ParameterExpression]) – The evolution time.
• label (Optional[str]) – A label for the gate to display in visualizations. Per default, the label is set to exp(-it <operators>) where <operators> is the sum of the Paulis. Note that the label does not include any coefficients of the Paulis. See the class docstring for an example.
• synthesis (Optional[EvolutionSynthesis]) – A synthesis strategy. If None, the default synthesis is the Lie-Trotter product formula with a single repetition.

## Methods Defined Here

### validate_parameter

PauliEvolutionGate.validate_parameter(parameter) GitHub(opens in a new tab)

Gate parameters should be int, float, or ParameterExpression

Return type

Union[float, ParameterExpression]

## Attributes

### condition_bits

Get Clbits in condition.

Return type

List[Clbit]

### decompositions

Get the decompositions of the instruction from the SessionEquivalenceLibrary.

### definition

Return definition in terms of other basic gates.

### duration

Get the duration.

### label

Return instruction label

Return type

str

Return the name.

### num_clbits

Return the number of clbits.

### num_qubits

Return the number of qubits.

### params

return instruction params.

### time

Return the evolution time as stored in the gate parameters.

Return type

Union[float, ParameterExpression]

Returns

The evolution time.

### unit

Get the time unit of duration.