qat.spd.pauli_tableau.PauliTableau

class qat.spd.pauli_tableau.PauliTableau(nqbits, obs=None, pauli_string=None, qbits=None, tableau=None, phase=None)

Pauli tableau class used to represent and manipulate linear combinations of Pauli operators. It is the core data structure used for Heisenberg-picture evolution of observables.

Each Pauli row is encoded using packed Z and X bits in a 2D array. Optionally, each row can also carry a complex coefficient and a phase of the form \(i^q\).

This class is used to represent both the observable being evolved and the Pauli operations applied to it.

Conventions

  • Bits are packed into 64-bit integers (as np.uint64), first storing Z bits, then X bits.

  • Phases are stored as integers q corresponding to powers of \(i\), so that the total phase is \(i^q\).

param nqbits:

Number of qubits in the system.

type nqbits:

int

param obs:

Observable to be stored as a Pauli tableau.

type obs:

qat.core.Observable, optional

param pauli_string:

List of Pauli words (e.g., [“IX”, “YY”, “ZZ”]).

type pauli_string:

list of str, optional

param qbits:

Qubit indices corresponding to each Pauli string. Used in conjunction with pauli_string.

type qbits:

list of int, optional

param tableau:

Array of packed Z/X bits representing Pauli rows.

type tableau:

np.ndarray, optional

param phase:

Array of integer phases for each Pauli row.

type phase:

np.ndarray, optional

nqbits

Number of qubits.

Type:

int

tableau

2D array of packed Z and X bits, one row per Pauli term. Each element is a np.uint64.

Type:

np.ndarray

phase

Integer phases of Pauli rows, stored as np.int32. Each entry represents the power of \(i\) (e.g., 1 means \(i^1\)).

Type:

np.ndarray

coeffs

Coefficients of the Pauli rows (complex amplitudes), stored as np.complex128. Set if initialized from an observable.

Type:

np.ndarray, optional

split

Internal constant to determine the boundary between Z and X bits in the packed tableau array.

Type:

int

Notes

If obs is provided, the tableau is initialized from it and coefficients are set. If pauli_string is provided, it overrides obs, and coefficients are not set. If none of the inputs are provided, the tableau defaults to the identity operator.