Qubricks Index¶
This page serves as a reference for all Qubricks implemented in Workbench Algorithms. Every Qubrick
is listed alongside a short description of what it does,
a link to the API reference where the source code for its implementation can be found and
a link to any example notebooks that make use of it.
Total number of qubricks: 99.
| Qubrick name | Description | Tutorial notebooks the Qubrick appears in |
|---|---|---|
| AbsoluteDisplacement | Qubrick for computing the reciprocal of the absolute value of the difference of two vectors. | Vector arithmetic |
| AliasSampling | Qubrick for implementing alias sampling. | Alias sampling tutorial |
| AmpAmp | Performs amplitude amplification to boost the amplitude of a desired outcome. | Amplitude Amplification |
| AmplitudeAmplifiedQubrick | Performs amplitude amplification on the input Qubrick to provide an "amplified" Qubrick. | Amplitude Amplification |
| Antisymmetrizer | Qubrick to antisymmetrize a register of qubits. | Antisymmetrization |
| ArbitraryStatePrep | State preparation based on the routine in arXiv:quant-ph/0407010v1 ⧉. | Naive state preparation tutorial |
| BasisRotatedNumberOperator | Qubrick for basis-rotated number operator (BRNO). | Basis rotated Number operator (with batching) |
| BinaryToUnaryUncomputation | Circuit which undoes a binary to unary conversion. | |
| BinaryTreeMultiplexor | Optimized multiplexing based on Fig. 7 in arXiv:1805.03662 ⧉. | Simple Multiplexing Examples, Majorana Fermion Operator tutorial, Multiplexed USP |
| BinaryTreeSelect | Optimized select from Fig. 7 in "Encoding Electronic Spectra in Quantum Circuits with Linear T Complexity" (arXiv:1805.03662 ⧉). | Low Kliuchnikov Schaeffer state preparation tutorial, Data Loaders QROM |
| BitonicPermutation | A routine that permutes qubit registers. | |
| BitonicSort | Qubrick for performing a bitonic sort on a list of qubits. | Bitonic sort, Dyson Series Expansion Tutorial, Antisymmetrization |
| CoherentIterativeQPE | Performs iterative QPE as shown in Fig. 16 of arxiv:2105.02859 ⧉. | Quantum phase estimation tutorial |
| CompressionGadget | Compression gadget for block-encoding powers. | Dyson Series Expansion Tutorial, Compression Gadget |
| ComputeHammingWeightBinaryRecursion | Quantum circuit to compute the Hamming Weight of a register that uses roughly O(N/2) ancillae and O(N) Toffoli. | Computing the Hamming weight |
| ComputeHammingWeightGroupOfThrees | Quantum circuit to compute the Hamming Weight of a quantum register that uses roughly N ancillae and O(N) Toff. | Computing the Hamming weight, Hamming weight phasing, Batched hamming weight phasing |
| ComputeHammingWeightNaive | Naive/Qubit-efficient circuit to compute the Hamming Weight of a quantum register. | Computing the Hamming weight, Hamming weight phasing, Batched hamming weight phasing |
| ConditionallyClean | Select utilizing conditionally clean construction as presented in arxiv:2407.17966 ⧉. | |
| ConditionallyCleanMultiplexor | Multiplexor utilizing conditionally clean construction as presented in arxiv:2407.17966 ⧉. | |
| Contiguizer | Given an input register, produce a new register with 1s from the most significant bit down to 0. | Multiplexed USP |
| CosineWindow | Cosine window from arxiv:2110.09590 ⧉. | Window states for QPE tutorial |
| DataLookupClean | Data lookup (QROM) circuit using the SELECT-SwapUp architecture. | Basis rotated Number operator (with batching), Low Kliuchnikov Schaeffer state preparation tutorial, Data Loaders QROM, Alias sampling tutorial |
| DataLookupDirtyNaive | Naive data lookup (QROM) oracle using dirty auxiliary qubits. | Low Kliuchnikov Schaeffer state preparation tutorial, Data Loaders QROM |
| DataLookupDirtyOptimized | Optimized data lookup (QROM) oracle using dirty auxiliary qubits. | Low Kliuchnikov Schaeffer state preparation tutorial, Data Loaders QROM |
| DoublePhaseKickbackQPE | Implements the double-phase kickback quantum phase estimation routine. | Quantum phase estimation tutorial |
| DysonSeriesLCU | A Dyson Series LCU Qubrick with a unary version of the truncation register. | Dyson Series Expansion Tutorial |
| DysonSeriesPrepareBinary | A modified version of the Dyson series expansion as in arXiv:1805.00675 ⧉. | Dyson Series Expansion Tutorial |
| DysonSeriesPrepareUnary | A modified version of the Dyson series expansion as in arXiv:1805.00675 ⧉. | Dyson Series Expansion Tutorial |
| DysonSeriesSelectBinary | A modified version of the Dyson series expansion as in arXiv:1805.00675 ⧉. | Dyson Series Expansion Tutorial |
| DysonSeriesSelectUnary | A modified version of the Dyson series expansion as in arXiv:1805.00675 ⧉. | Dyson Series Expansion Tutorial |
| EfficientMultiplexedRotations | Decomposition of uniformly controlled rotations to single qubit rotation + CNOTs. | Naive state preparation tutorial |
| FlagCollisionsBinary | A FlagCollisionsBinary Qubrick to reflect (time) collisions. | Dyson Series Expansion Tutorial |
| FlagCollisionsUnary | A FlagCollisions Qubrick to reflect (time) collisions. | Dyson Series Expansion Tutorial |
| FlattenedRotArray | Implements a state sub-preparation using a single set of multiplexed rotations. | |
| GeneralMultiplexedRotationNaive | Routine for implementing multiplexed rotations, allowing for various tradeoffs. | Basis rotated Number operator (with batching) |
| GeneralMultiplexedRotationViaQROM | Optimized implementation of multiplexed rotations using QROM for angle loading. | Basis rotated Number operator (with batching) |
| GivensPPRs | Applies the Givens rotation using Pauli Product Rotations. | Basis rotated Number operator (with batching) |
| GivensRZs | Implements a Givens rotation using RZ gates. |
|
| GivensRotationFusedAdder | Implements a Givens rotation using a fused quantum adder. | Basis rotated Number operator (with batching) |
| GivensRotationTwoAdders | Implements a Givens rotation using two quantum adders. | Basis rotated Number operator (with batching) |
| GoodReflectionBlockEncoding | Reflection about a block encoded good state (i.e., all block encoding auxiliary qubits in \(\ket{0}\)). | Amplitude Amplification |
| GoodReflectionGrover | Qubrick for reflecting about a good state in Grover. | Amplitude Amplification |
| GrayCodeMultiplexedSingleQubitRotation | Decomposition of uniformly controlled rotations to single qubit rotation + CNOTs. | |
| GroverDiffuser | Qubrick for Grover diffuser (reflection about the mean). | Amplitude Amplification |
| HammingWeightPhasing | Implement a stack of rotations of the same angle using hamming weight phasing. | Hamming weight phasing, Batched hamming weight phasing |
| HouseholderMPSLoading | Qubrick for loading the MPS on a quantum computer, based on HouseholderUnitarySynthesis. |
|
| HouseholderUnitarySynthesis | Qubrick synthesizing an isometry using the Householder-based decomposition. | |
| InitReflectionBlockEncoding | Reflection about the initial state given a unitary that prepares that state. | Amplitude Amplification |
| InitReflectionFromUnitary | Reflection about the initial state given a unitary that prepares that state. | Amplitude Amplification |
| InjectOp | Inject operation, defined as SwapUp \(^\dagger\) Op SwapUp. | SwapUp Inject |
| IterativeQPE | Implements incoherent (measurement-based) QPE. | Quantum phase estimation tutorial, Iterative Quantum Phase Estimation |
| LCU | Implements a general block encoding using Linear Combination of Unitaries (LCU). | Quantum phase estimation tutorial, Dyson Series Expansion Tutorial, Amplitude Amplification, LCU Qubitization, Compression Gadget |
| LKSMultiplexor | Multiplexor using data-lookup oracles. | Low Kliuchnikov Schaeffer state preparation tutorial |
| LKSStatePrep | State preparation detailed in arXiv:1812.00954 ⧉. | Low Kliuchnikov Schaeffer state preparation tutorial |
| MajoranaFermionOperator | The Majorana Fermion Operator shown in Fig. 9 of arXiv:1805.03662 ⧉. | Majorana Fermion Operator tutorial |
| MultiplexedAliasSampling | Implements the multiplexed alias sampling subroutine for multiplexed arbitrary state preparation. | |
| MultiplexedRealUSP | Qubrick to perform multiplexed USP. | Multiplexed USP |
| MultiplexedSingleQubitRotationViaQROM | Multiplexor using data-lookup oracles. | |
| MultiplexedSparseDataLookup | Multiplexed data lookup oracle in Fig. (43) of arXiv:2007.14460 ⧉. | |
| MultiplexedUSP | Qubrick to perform multiplexed USP. | Multiplexed USP |
| NaiveMultiplexedRotations | Controlled rotations from arXiv:0407010 ⧉. | Naive state preparation tutorial |
| NaiveMultiplexedSingleQubitRotation | Controlled rotations from arXiv:0407010 ⧉. | |
| OneAncMultiplexor | \(\text{SELECT}\) operator using a single, clean ancilla. | Simple Multiplexing Examples, Multiplexed USP |
| OptimizedDoublePhaseKickbackQPE | Implements an optimized version of the double-phase kickback quantum phase estimation routine. | |
| OrthogonalDotProduct | Qubrick for squaring an n-component vector, then adding the squared results. | Vector arithmetic |
| PauliToPauliBasisTransform | Transforms quantum operations between different Pauli bases (X, Y, Z). | |
| PhaseGradientAdder | Optimized adder for use in phase gradient addition. | |
| PhasingCircuit | Implement the phasing circuit. | |
| PowerOfTwoBatchedHammingWeightPhasing | Implements Hamming weight phasing by splitting the target register into batches. | Batched hamming weight phasing |
| PrepareClockState | Prepares a clock state. | Dyson Series Expansion Tutorial |
| PrepareNaive | State preparation based on the routine in arXiv:quant-ph/0407010v1 ⧉. | Quantum phase estimation tutorial, Naive state preparation tutorial, Dyson Series Expansion Tutorial, Amplitude Amplification, LCU Qubitization, Compression Gadget |
| PrepareWState | Prepares a W state. | |
| PrepareWStatePowerTwo | Prepares a W state for power of two target size. | |
| ProgrammableRotArray | Implements a state sub-preparation using a cascade of uniformly controlled rotations. | |
| QPE | Implements the standard quantum phase estimation routine using controlled unitaries and QFT. | Window states for QPE tutorial, Quantum phase estimation tutorial, Trotterization tutorial, Iterative Quantum Phase Estimation |
| Qubitization | Canonical qubitization iterate. | Quantum phase estimation tutorial, Dyson Series Expansion Tutorial, Amplitude Amplification, LCU Qubitization, Data Loaders QROM |
| QubitizedWalkOperator | Qubitization iterate. | Quantum phase estimation tutorial |
| RealUSP | Qubrick for performing Uniform State Preparation. | Uniform state preparation tutorial, Multiplexed USP |
| RectWindow | Rectangular/Dirichlet window. This is the default window function for the textbook QPE. | Window states for QPE tutorial |
| RotationViaPhaseGradientAddition | Coherently-applies WB qc.phase rotations via phase gradient addition. | |
| RotationViaSingleQubitUnitaries | Compute circuit for rotations via controlled single-qubit rotations. | |
| Rz | Implementation of a direct Rz rotation using the built-in rz method. | Window states for QPE tutorial, Quantum phase estimation tutorial |
| RzAdder | Implementation of Rz rotation using an adder-based approach. | |
| SawtoothMultiplexor | Unoptimized multiplexor from Fig. 5 in arXiv:1805.03662 ⧉. | Simple Multiplexing Examples, Multiplexed USP |
| SawtoothSelect | Unoptimized select from Fig. 5 in "Encoding Electronic Spectra in Quantum Circuits with Linear T Complexity" (arXiv:1805.03662 ⧉). | LCU Qubitization, Low Kliuchnikov Schaeffer state preparation tutorial, Data Loaders QROM |
| SelectNaive | Most naïve version of \(\text{SELECT}\) possible. | Simple Multiplexing Examples, Quantum phase estimation tutorial, Basis rotated Number operator (with batching), Dyson Series Expansion Tutorial, Amplitude Amplification, LCU Qubitization, Low Kliuchnikov Schaeffer state preparation tutorial, Data Loaders QROM, Compression Gadget, Alias sampling tutorial |
| SelectOneAnc | \(\text{SELECT}\) operator using a single, clean auxiliary qubit. | Low Kliuchnikov Schaeffer state preparation tutorial, Data Loaders QROM |
| SineWindow | Qubrick for window state with the sine function over the amplitudes. | |
| SineWindowPhaseCatalysis | Qubrick for window state with the sine function over the amplitudes. | |
| SineWindowQubitEfficient | Qubrick for window state with the sine function over the amplitudes using only two active qubits at a time. | |
| SwapUp | Canonical SwapUp circuit that acts on arbitrary input states. | Basis rotated Number operator (with batching), Low Kliuchnikov Schaeffer state preparation tutorial, Data Loaders QROM, SwapUp Inject, Alias sampling tutorial |
| TrotterQuery | Qubrick for implementing a Suzuki-Trotter approximation of an exponentiated Hamiltonian. | Trotterization tutorial |
| USP | Qubrick for Uniform State Preparation. |
Data Loaders QROM, Alias sampling tutorial, Uniform state preparation tutorial, Multiplexed USP |
| UnaryQROM | A unary-encoded data-loader. | |
| VectorAddition | Qubrick for adding (or subtracting) the components of two vectors of Qubits. | Vector arithmetic |
| WindowEmulator | Constructor for window emulator. | Window states for QPE tutorial |
| WindowStatePrep | General class for simulating window state via state prep. | Window states for QPE tutorial |
| ZeroAncMultiplexor | Most naïve version of multiplexing possible. | Simple Multiplexing Examples, Majorana Fermion Operator tutorial, Multiplexed USP |
| ZeroAncillaUSP | Qubrick for performing Uniform State Preparation without ancillae. | Data Loaders QROM, Uniform state preparation tutorial |