Skip to Content

Pauli Utilities

Pauli utilities convert between matrices, Pauli strings, and quantum circuits, and support products, powers, commutators, and candidate sets for banded matrices. The leftmost character in a Pauli string corresponds to qubit 0.

import numpy as np from unitarylab.library.pauli_operator.pauli_string_decomposition import ( pauli_string_decomposition, pauli_string_to_matrix, ) H = np.array([[1.0, 0.5], [0.5, -1.0]], dtype=complex) terms = pauli_string_decomposition(H) recovered = pauli_string_to_matrix(terms) print(terms) print(np.allclose(H, recovered))

pauli_string_decomposition() returns list[tuple[str, complex]], not a dictionary. By default, coefficients with magnitude less than are discarded.

Interface categories

from unitarylab.library.pauli_operator.pauli_string_decomposition import ( pauli_string_decomposition, pauli_string_to_matrix, pauli_string_circuit, pauli_string_evolution, pauli_string_multiply, pauli_string_product, pauli_string_power, pauli_string_commutator, pauli_string_band_matrix, pauli_string_band_matrix_prepared, )
InterfaceInputReturn value
pauli_string_decomposition(H, sets=None, partition_commuting=True, real_symmetric_hint=False)Hermitian matrixList of Pauli terms
pauli_string_to_matrix(decomposition)String, single term, list, or dictionaryNumPy matrix
pauli_string_circuit(pauli_string)For example, "XYZ"Circuit for the Pauli operations
pauli_string_evolution(pauli_string, theta)Pauli string and rotation angleCircuit for
pauli_string_multiply(p1, p2)Equal-length Pauli strings(pauli_string, phase)
pauli_string_product(decomposition)Multiple Pauli termsMerged Pauli strings and coefficients
pauli_string_power(decomposition, order)Pauli expansion and nonnegative integer powerExpanded power
pauli_string_commutator(p1, p2)Equal-length Pauli stringsPauli strings and coefficients for the commutator
pauli_string_band_matrix(n_qubits, width, as_tuple=False)Qubit count and bandwidthCandidate Pauli set for a banded matrix
pauli_string_band_matrix_prepared(n_qubits, width)Qubit count and bandwidthPrepared candidate set

Decomposition options

  • sets: decompose only over the specified Pauli candidate set.
  • partition_commuting=True: reorder the result by commutation relationships to support measurement grouping.
  • real_symmetric_hint=True: when the input is known to be real symmetric, skip candidates containing an odd number of Y operators.

Matrix dimensions must be , and the matrix must be Hermitian. Pauli strings may contain only I, X, Y, and Z; the two strings used in multiplication and commutator operations must have equal lengths. A narrow candidate set can omit matrix components, so verify reconstruction with sets by converting the result back to a matrix.

Resource limits

The complete Pauli basis contains strings, so general decomposition grows rapidly with qubit count. For known matrix structure, use real_symmetric_hint, sets, or a banded-matrix candidate set, then check small examples with np.allclose().

Last updated on