Skip to content

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