Header menu logo Encodings

CostAnalysis Module

Unified cost metrics for encoded Hamiltonians, including qubitization resource estimation.

Provides cost functions that characterise a Hamiltonian in the Pauli basis independently of any particular simulation strategy. Metrics include the LCU 1-norm (λ), Pauli weight statistics, and term counts — all of which feed into resource estimates for Trotterization, qubitization, and measurement programs.

The qubitization resource estimate follows Low & Chuang (2019): the query complexity of quantum signal processing scales as O(λ / ε), where λ = Σ|cₖ| is the LCU 1-norm and ε is the target precision.

Types

Type Description

HamiltonianCosts

Comprehensive cost metrics for a Hamiltonian in Pauli basis.

QubitizationCosts

Qubitization resource estimate for a Hamiltonian expressed as an LCU.

SimulationCostComparison

Simulation cost comparison at a given precision target.

Functions and values

Function or value Description

compareCosts encodings

Full Usage: compareCosts encodings

Parameters:
Returns: (string * HamiltonianCosts)[] Array of (name, costs) pairs sorted by λ-norm ascending.

Compare cost metrics across multiple encoded Hamiltonians.

encodings : (string * PauliRegisterSequence)[]

Array of (name, Hamiltonian) pairs.

Returns: (string * HamiltonianCosts)[]

Array of (name, costs) pairs sorted by λ-norm ascending.

compareQubitizationCosts encodings

Full Usage: compareQubitizationCosts encodings

Parameters:
Returns: (string * QubitizationCosts)[] Array of (name, costs) pairs sorted by λ ascending.

Compare qubitization costs across multiple encoded Hamiltonians.

encodings : (string * PauliRegisterSequence)[]

Array of (name, Hamiltonian) pairs.

Returns: (string * QubitizationCosts)[]

Array of (name, costs) pairs sorted by λ ascending.

hamiltonianCosts hamiltonian

Full Usage: hamiltonianCosts hamiltonian

Parameters:
Returns: HamiltonianCosts A HamiltonianCosts record with all metrics.

Compute comprehensive cost metrics for a Hamiltonian.

hamiltonian : PauliRegisterSequence

The Hamiltonian as a sum of Pauli strings.

Returns: HamiltonianCosts

A HamiltonianCosts record with all metrics.

pauliWeight register

Full Usage: pauliWeight register

Parameters:
Returns: int

Compute the Pauli weight (number of non-identity positions) of a register.

register : PauliRegister
Returns: int

qubitizationCosts hamiltonian

Full Usage: qubitizationCosts hamiltonian

Parameters:
Returns: QubitizationCosts A QubitizationCosts record.

Compute qubitization resource estimates for a Hamiltonian.

hamiltonian : PauliRegisterSequence

The Hamiltonian as a sum of Pauli strings.

Returns: QubitizationCosts

A QubitizationCosts record.

qubitizationQueries costs time epsilon

Full Usage: qubitizationQueries costs time epsilon

Parameters:
    costs : QubitizationCosts - Pre-computed qubitization costs.
    time : float - Evolution time t.
    epsilon : float - Target precision ε.

Returns: int Estimated query count (rounded up).

Estimate the number of queries to the block-encoding oracle needed for time evolution exp(−iHt) to precision ε.

Based on the quantum signal processing bound: the number of queries scales as O(λt/ε + log(1/ε)), where λ is the LCU 1-norm. The leading term dominates for chemically relevant precisions.

costs : QubitizationCosts

Pre-computed qubitization costs.

time : float

Evolution time t.

epsilon : float

Target precision ε.

Returns: int

Estimated query count (rounded up).

simulationCosts hamiltonian time epsilons

Full Usage: simulationCosts hamiltonian time epsilons

Parameters:
    hamiltonian : PauliRegisterSequence - The encoded Hamiltonian.
    time : float - Evolution time t (default 1.0).
    epsilons : float[] - Array of precision targets to evaluate.

Returns: SimulationCostComparison[] Array of cost comparisons, one per epsilon.

Compare Trotter and qubitization costs for a given Hamiltonian at multiple precision targets.

Trotter step count uses the standard first-order bound: r ≥ ⌈λ²t²/(2ε)⌉, where λ = Σ|cₖ| and ε is the target precision. Each step contributes the CNOT count from the CNOT staircase decomposition.

Qubitization query count follows the QSP bound: ⌈λt/ε⌉.

The crossover precision ε* is the point where Trotter total CNOTs equals qubitization queries — below ε*, qubitization dominates. Since Trotter CNOTs per step are encoding-dependent but λ is encoding-independent, the crossover point shifts with encoding choice.

hamiltonian : PauliRegisterSequence

The encoded Hamiltonian.

time : float

Evolution time t (default 1.0).

epsilons : float[]

Array of precision targets to evaluate.

Returns: SimulationCostComparison[]

Array of cost comparisons, one per epsilon.

trotterQubitizationRatio hamiltonian time

Full Usage: trotterQubitizationRatio hamiltonian time

Parameters:
Returns: float The cost ratio (Trotter CNOTs / qubitization queries). Values >1 mean qubitization is more efficient.

Estimate the crossover precision ε* where Trotter total CNOTs equals qubitization queries.

From the cost models: Trotter CNOTs = ⌈λ²t²/(2ε)⌉ × C (C = CNOTs per step) Qubitization = ⌈λt/ε⌉

Setting equal: λ²t²C/(2ε) = λt/ε → ε* = λtC/2. Wait — that doesn't depend on ε! The ratio is: Trotter/Qubitization = λtC/2.

This means for first-order Trotter, the ratio is ε-independent: qubitization wins whenever λtC/2 > 1, i.e., when C > 2/(λt). For molecular Hamiltonians with large λ and C, qubitization almost always wins — but reducing C (via better encoding) narrows the gap, and for higher-order Trotter the crossover becomes ε-dependent.

hamiltonian : PauliRegisterSequence

The encoded Hamiltonian.

time : float

Evolution time t.

Returns: float

The cost ratio (Trotter CNOTs / qubitization queries). Values >1 mean qubitization is more efficient.

Type something to start searching.