fiqci.ems.mitigators.zne#

Extrapolation methods for Zero-Noise Extrapolation.

Functions

exponential_extrapolation(...[, eps])

Perform exponential extrapolation to estimate the zero-noise value.

polynomial_extrapolation(expectation_values, ...)

Polynomial least-squares extrapolation to estimate the zero-noise value.

richardson_extrapolation(expectation_values, ...)

Richardson extrapolation to estimate the zero-noise value.

exponential_extrapolation(expectation_values: list[list[float]], scale_factors: list[int], eps: float = 1e-09) list[float]#

Perform exponential extrapolation to estimate the zero-noise value.

Fits y = sign * exp(b) * exp(a * x) in log-space per observable. Magnitudes are floored relative to each column’s largest value before taking the log, so values that are ~0 (or whose sign flips due to noise) can’t produce log(0) = -inf or dominate the linear fit.

Parameters:
  • expectation_values – Expectation values of shape (n_scales, n_obs) or (n_scales,).

  • scale_factors – Noise scale factors corresponding to different noise levels.

  • eps – Magnitude floor as a fraction of each column’s maximum magnitude.

Returns:

The extrapolated zero-noise expectation value(s).

richardson_extrapolation(expectation_values: list[list[float]], scales: list[int]) list[float]#

Richardson extrapolation to estimate the zero-noise value.

Computes exact Lagrange interpolation coefficients evaluated at x=0: cᵢ = ∏_{j≠i} λⱼ / (λⱼ - λᵢ) and returns E(0) = Σᵢ cᵢ · E(λᵢ).

Parameters:
  • expectation_values – Array-like of shape (n_scales, n_obs) or (n_scales,)

  • scales – Noise scale factors used (e.g., [1, 3, 5])

Returns:

Zero-noise estimate(s) per observable.

polynomial_extrapolation(expectation_values: list[list[float]], scales: list[int], degree: int | None = None) list[float]#

Polynomial least-squares extrapolation to estimate the zero-noise value.

Fits a polynomial of the given degree to the (scale, expectation_value) data and evaluates it at x=0.

Parameters:
  • expectation_values – Array-like of shape (n_scales, n_obs) or (n_scales,)

  • scales – Noise scale factors used (e.g., [1, 3, 5])

  • degree – Polynomial degree. Defaults to min(n_scales - 1, 2).

Returns:

Zero-noise estimate(s) per observable.