About this map
Sections
What this is
Quantum algorithms are not written from scratch. They are assembled from a small number of reusable steps, and almost every published method is a different route through the same handful of them.
This is a map of those routes. Circles are the things an algorithm can be holding. Lines are the steps that carry you from one to the next. A method is a path across.
Nothing here is generated. Every line was read out of a paper and checked against it.
How to read it
- Something you can hold — a state, a matrix, a circuit, an answer.
- The same, in the middle of a step you have opened.
- A step. Someone has published a way through it.
- A step whose way through has not been pinned to one method.
- A step nothing published fills yet.
- A step you have opened. What is drawn inside it is how it was done.
- There is a record in the repository for this one.
How to move around
- Two fingers move the map. Pinch to zoom, or hold ctrl and scroll.
- Click a step to open it in place — everything else stays where it is.
- Click a name to read the full record without leaving the map.
- Arrow keys move, plus and minus zoom, zero puts it back.
What a line is claiming
A solid line means a paper puts those two steps together and we have the citation. A long-dashed line means the route is recorded but no single method has been named for that step. A short-dashed line means nothing published fills it — the step is real, the way through is not written yet.
A count after a step's name — ×T/h, ×O(κ) — means the route walks that step that many times rather than once. It is the source's own symbol, and the card says what it stands for and what one turn costs. A step with no count is a step no source we read said is repeated, which is not the same as one taken once.
A line drawn nested under another, on the soft shaded band behind it, is a narrower version of the line above it: the same construction, re-analysed or re-tuned, filling the same step. It is why two lines can draw the identical interior and still be two entries. Lines outside the band are alternatives to their neighbours, not versions of them.
The map does not hide the gaps. An empty step is drawn as an empty step.
What is not here yet
The map covers the algorithm literature. The repository covers circuits and primitives. They overlap less than you would expect, and where a method has no record we say so on its page rather than leaving the space blank.
Where something named here does have a record, its name links straight to it.
Method
Remez exchange for a minimax polynomial
Rather than truncating a Chebyshev series, which is only near-optimal, run the Remez exchange algorithm to obtain the genuine minimax polynomial of a given degree. In the QSP setting it is the alternative front end, handing a tighter polynomial of the same degree to the phase-factor stage.
Open the full recordFills the slot: Polynomial approximation
Remez is a classical approximation-theory algorithm, not a quantum one. The citation here is the QSP paper that employs it, alongside a Fourier-Chebyshev expansion, and should not be read as its origin. In that use the coefficients are solved from a reference set of degree-plus-two sampled points, which is then adjusted.
A target function (, sign, and so on); a domain such as ; an error ; the required parity.
Target function → Polynomial approximationsolve on references, swap in the worst
What is wanted is the exact minimiser . assumption: the basis standing in for must satisfy the Haar condition — each continuous, and for every points the vectors linearly independent — which the paper secures by taking or , yielding the best odd or even polynomial. approximation: it is reached only iteratively. Each round solves over reference points for the coefficients and the deviation , forms the residual , locates its extremum between consecutive sign changes, and if beats every one of those, swaps the global maximiser in while keeping . The paper states uniformly at a linear, sometimes quadratic, rate.
approximationassumption
Chebyshev coefficients of the polynomial and its degree , plus the bound on over before any rescaling.
None found yet.
given the target function f, a degree d, and the interval
choose a reference set of d + 2 sample points on the interval
repeat:
solve for the degree-d polynomial P and the equioscillation error E
that fit f at the d + 2 reference points
move the reference set to the extrema of f - P
until the reference set stops moving
return P
# the genuine minimax polynomial of degree d, where truncating a Chebyshev
# series is only near-optimal -- a tighter polynomial of the same degree
# handed on to the phase-factor stage
# classical approximation theory, not a quantum algorithm: the citation on
# this record is the QSP paper that employs it, not its originDong, Meng, Whaley and Lin state no complexity for the Remez exchange itself. Their stated benefit is comparative: for approximating , the minimax polynomial reaches the same accuracy at a degree smaller by a factor of 2–3 than the Fourier–Chebyshev truncation — their Table III has degrees 303–1519 (odd parity) and 280–1400 (even) against 759–4035 for the truncation, at over –. Stated in the full text; the abstract carries no formula.
None found yet.
None found yet.
QSPPACK's Remez solver (Solvers/JuliaSolver/Remez.ipynb)
- Efficient phase-factor evaluation in quantum signal processing
Yulong Dong, Xiang Meng, K. Birgitta Whaley, Lin Lin · 2020
About
QSPPACK is the phase-factor toolbox released by authors of the paper this record's own citation names. Its readme lists two kinds of phase-factor solvers and then adds a third component: "The package also contains an implementation of the Remez algorithm for finding polynomial approximation." The notebook implementing it is dated "02/2020" and signed "Author: X. Meng" — a coauthor of the cited paper, and the same month the paper was first posted to arXiv — though the notebook itself carries no execution record tying it to a specific figure or table in the paper.
Methods
The `Remez` function solves, at each iteration, a linear system in arbitrary precision (Julia `BigFloat`) for the Chebyshev-basis coefficients of the odd, even or unconstrained-parity approximant plus a sign-alternating deviation term, evaluated at the current reference points; finds the sign-change roots of the residual with Brent's method; searches each bracketed sub-interval by dense sampling for the point of largest residual magnitude to move the reference to; and repeats until the deviation and the achieved error agree to within its stopping tolerance or `maxiter` is reached. The notebook states its own caveat directly: "We note that our implementation does not strictly follow the reference. The algorithm may crush [sic] when the degree is very large or the problem is ill-conditioned," and cites its reference as E. W. Cheney's *Introduction to Approximation Theory* — the same classical-approximation-theory framing this record's own `conditions` field gives Remez.
Data
Inputs are a Julia-callable target function, a requested `degree`, a `parity` flag (0 even, 1 odd, 2 unconstrained), the interval endpoints, and either an initial reference (the roots of a Chebyshev polynomial by default) or a user-supplied one. The notebook's own worked example approximates — a rescaled — over at , even parity, degree 60, target accuracy , using 512-bit precision.
Code
Repository `qsppack/QSPPACK`, path `Solvers/JuliaSolver/Remez.ipynb`, function `Remez(targetf, parity, degree, xapp, lef, rig, maxiter, sample_size, eps)`. Its output — the Chebyshev-basis coefficients — is, per the example cell's own comment, meant to be written to a `.mat` file so the caller can "solve for corresponding phase factors via optimization method": the hand-off to the phase-factor stage this record's `summary` describes. That optimization-based phase-factor solver lives separately, in `Solvers/Optimization`, and is Dong, Meng, Whaley and Lin's own method from the same paper.
Results
None found yet.
- Efficient phase-factor evaluation in quantum signal processing
Chebfun's `minimax` (barycentric Remez exchange)
About
Chebfun's general-purpose best-approximation routine, in `minimax.m` at the root of the `chebfun/chebfun` repository. Its own header states plainly: "P = MINIMAX(F, M) computes the minimax polynomial approximation of degree M to the real function F using the Remez algorithm," where F may be a chebfun, a function handle, or a string, over a domain that defaults to — a general target function and interval, not a filter's frequency response. The header adds that the file "supersedes REMEZ," an earlier, separate implementation in the same toolbox.
Methods
In the two-argument form `MINIMAX(F, M)` this record's `about` field quotes — Chebfun's ordinary polynomial-approximation call — the reference set is seeded once at Chebyshev extrema (`xk = chebpts(N + 2, ...)`) and handed to a single call of the internal `minimaxKernel`, which on each round calls a local subroutine named `exchange`, whose own header states the algorithm outright: "EXCHANGE Modify an equioscillation reference using the Remez algorithm," returning "a FLAG indicating whether there were at least N+2 alternating extrema of the error to form the next reference." This polynomial path makes no symmetry assumption (`symFlag` is hardcoded to 0) and, unlike QSPPACK's solver above, takes no parity argument either; automatic detection of odd/even symmetry via `adjustDegreesForSymmetries`, and the fallback chain that retries a failed reference construction — first with a Caratheodory–Fejer-based initial reference, then an AAA-Lawson-based one, then two cumulative-distribution-function-based ones, before raising `CHEBFUN:CHEBFUN:minimax:failure` — both belong only to `minimax.m`'s separate rational-approximation branch, reached when the caller supplies an explicit third argument.
Data
A target `f` (chebfun, function handle, or string), a requested degree `m`, an optional domain `[a, b]` (default ), and an optional user-supplied starting reference `xk`; a tolerance on the equioscillation error and a maximum iteration count are also accepted as name-value options.
Code
Repository `chebfun/chebfun`, file `minimax.m`; the reference-exchange step is the local function `exchange` in the same file, and the Chebyshev-point initialization for the polynomial case is the call to `chebpts` inside `minimax.m`'s own top-level branch for .
Results
None found yet.
SciPy's `scipy.signal.remez` (Parks–McClellan FIR design)
About
SciPy's public entry point for the Remez exchange algorithm, but scoped to one long-standing application rather than to a general target function: designing finite-impulse-response filter taps against a piecewise-constant frequency-response specification. Its docstring states directly: "Calculate the minimax optimal filter using the Remez exchange algorithm," computing "filter-coefficients for the finite impulse response (FIR) filter whose transfer function minimizes the maximum error between the desired gain and the realized gain in the specified frequency bands." Read honestly against this record: the caller supplies band edges and one desired gain per band, not an arbitrary function handle and an arbitrary interval, so this is the filter-design specialization of Remez rather than the general-purpose construction the record describes.
Methods
The Python wrapper in `scipy/signal/_fir_filter_design.py` validates its arguments and forwards to a compiled extension function, `_sigtools._remez` (defined in `scipy/signal/_sigtoolsmodule.cc`, registered under the name `_remez`). That file credits its algorithm directly, in a header comment: "Code taken from remez.c by Erik Kvaleberg which was converted from an original FORTRAN by... JAMES H. MCCLELLAN... THOMAS W. PARKS... LAWRENCE R. RABINER." Its own `remez()` subroutine comment states the algorithm in the same terms this record's own theory hop uses: "THIS SUBROUTINE IMPLEMENTS THE REMEZ EXCHANGE ALGORITHM FOR THE WEIGHTED CHEBYSHEV APPROXIMATION OF A CONTINUOUS FUNCTION WITH A SUM OF COSINES," working from "A DENSE GRID WHICH REPLACES THE FREQUENCY AXIS, THE DESIRED FUNCTION ON THIS GRID, THE WEIGHT FUNCTION ON THE GRID, THE NUMBER OF COSINES, AND AN INITIAL GUESS OF THE EXTREMAL FREQUENCIES," and it "MINIMIZES THE CHEBYSHEV ERROR BY DETERMINING THE BSMINEST [sic] LOCATION OF THE EXTREMAL FREQUENCIES... AND THEN CALCULATES THE COEFFICIENTS OF THE BEST APPROXIMATION." A sum of cosines in the frequency variable is, under , a linear combination of Chebyshev polynomials, so the routine is the same exchange algorithm on an algebraic polynomial in disguise.
Data
`numtaps` (filter length), `bands` (a monotonic sequence of frequency band edges), `desired` (one gain value per band), an optional per-band `weight`, a filter `type` ('bandpass', 'differentiator' or 'hilbert'), `maxiter` (default 25) and `grid_density` (default 16, so the dense grid used internally has `(numtaps + 1) * grid_density` points).
Code
Public function `scipy.signal.remez`, defined in `scipy/signal/_fir_filter_design.py`; it calls the C extension function registered as `_sigtools._remez` in `scipy/signal/_sigtoolsmodule.cc`, which in turn calls the file's own internal `pre_remez()` and `remez()` routines.
Results
None found yet.
None found yet.
References
- Efficient phase-factor evaluation in quantum signal processing
Yulong Dong, Xiang Meng, K. Birgitta Whaley, Lin Lin · 2020
Where the routes meet
Every circle is drawn once. This step has no smaller object recorded inside it, so the strands between its two circles are the recorded ways of taking it — one strand per method.
2 recorded ways of doing Polynomial approximation. Nothing smaller is recorded inside it, so there is no object in the middle to draw.
Everything on this figure that opens is open.
Of the routes that have been taken apart, 15 are built entirely from named slots, 15 hand off part of the work and finish the rest themselves, and 20 are one undivided act. None of the three is a defect; they are different things to reuse.
Every line on this figure, in words
The lines on this figure
- Every line on this figure is one a recorded source takes.
Open the cardRead the full write-up
Where you are
Path
- Solve a nonlinear ODE dy/dt = F(y)
- Quantum linear solve
- Matrix function
- Polynomial approximation
Ways through: 2
Routes that skip it
Narrower kinds
Nothing recorded is a narrower kind of this.
Every step you can open
1 of these have an object recorded in the middle; the rest open into the methods that fill them.
- Solve a nonlinear ODE dy/dt = F(y)
- Replace a spatial domain with a finite grid
- Discretize a PDE into one linear system
- Embed a nonlinear system into a linear one
- Solve a linear ODE du/dt = A(t)u + b(t)
- Recast a non-Hermitian generator as Hamiltonian evolution
- Choose a time discretization or propagator approximation
- Quantum linear solve
- Matrix function
- QSP phase factors
- Polynomial approximation
- Block-encode a matrix
- Prepare an input state
- Amplify a success branch
- Simulate Hamiltonian evolution
- Estimate an observable
- Compile a circuit to a specific device
- Satisfy the hardware connectivity constraint
- Approximate a continuous rotation in a discrete gate set
- Recover a noiseless expectation value by post-processing
- Build logical qubits at a target logical error rate
- Estimate a Hamiltonian's ground-state energy
- Choose a parameterised trial state
- Minimise the objective over the parameters
- Estimate an excited-state energy
- Measure what the machine can actually do
- Recover the period of a periodic function
- Estimate the eigenphase of a unitary
- Find the item a check accepts
- Walk a graph to the vertex you want
- Search a cost Hamiltonian for the assignment it minimises
What is on this map, counted
What is here, counted
147 nodes — 31 slots and 116 methods.
76 of the 147 link to a record in the Atlas, between them naming 89 records. The rest name papers and nothing else: this graph describes work the catalogue has not got yet, and the nodes with no record are the list of what a corpus pass has to go and read.
0 slots have no method recorded, and 32 methods have not been taken apart. Both are shown as what they are rather than left blank.
Every claim here rests on a source. This graph cites 140 papers; they and the 172 the Atlas cites alone are registered in one place, with what each reports and everywhere it is cited from. Papers