Skip to content
Construct PsiQDK Algorithms

Qubricks Library

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 its API reference, and links to any example notebooks that use it.

Total number of Qubricks: 100.

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.
AliasSampling Qubrick for implementing alias sampling.
AmplitudeAmplification Performs amplitude amplification to boost the amplitude of a desired outcome.
AmplitudeAmplifiedQubrick Performs amplitude amplification on the input Qubrick to provide an "amplified" Qubrick. Amplitude Amplification
Antisymmetrizer Qubrick to antisymmetrize a register of qubits.
ArbitraryStatePrep State preparation based on the routine in "Transformation of quantum states using uniformly controlled rotations" (arXiv:quant-ph/0407010 ⧉).
BasisRotatedNumberOperator Qubrick for basis-rotated number operator (BRNO).
BinaryToUnaryUncomputation Circuit which undoes a binary to unary conversion.
BinaryTreeMultiplexor Optimized multiplexing based on Fig. 7 in "Encoding Electronic Spectra in Quantum Circuits with Linear T Complexity" (arXiv:1805.03662 ⧉).
BinaryTreeSelect Optimized select from Fig. 7 in "Encoding Electronic Spectra in Quantum Circuits with Linear T Complexity" (arXiv:1805.03662 ⧉). Data Loaders QROM
BitonicPermutation A routine that permutes qubit registers.
BitonicSort Qubrick for performing a bitonic sort on a list of qubits.
CoherentIterativeQPE Performs iterative QPE as shown in Fig. 16 of "A Grand Unification of Quantum Algorithms" (arXiv:2105.02859 ⧉). Quantum Phase Estimation
CompressionGadget Compression gadget for block-encoding powers.
ComputeHammingWeightBinaryRecursion Quantum circuit to compute the Hamming weight of a register that uses roughly O(N/2) auxiliary qubits and O(N) Toffoli.
ComputeHammingWeightGroupOfThrees Quantum circuit to compute the Hamming weight of a quantum register that uses roughly N auxiliary qubits and O(N) Toffoli gates.
ComputeHammingWeightNaive Naive/Qubit-efficient circuit to compute the Hamming weight of a quantum register.
ConditionallyCleanMultiplexor Multiplexor utilizing conditionally clean construction as presented in "Rise of conditionally clean ancillae for efficient quantum circuit constructions" (arXiv:2407.17966 ⧉).
ConditionallyCleanSelect Select utilizing conditionally clean construction as presented in "Rise of conditionally clean ancillae for efficient quantum circuit constructions" (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 "Effects of Cosine Tapering Window on Quantum Phase Estimation" (arXiv:2110.09590 ⧉). Window Functions for QPE
DataLookupClean Data lookup (QROM) circuit using the SELECT-SwapUp architecture. Data Loaders QROM
DataLookupDirtyNaive Naive data lookup (QROM) oracle using dirty auxiliary qubits. Data Loaders QROM
DataLookupDirtyOptimized Optimized data lookup (QROM) oracle using dirty auxiliary qubits. Data Loaders QROM
DoublePhaseKickbackQPE Implements the double-phase kickback quantum phase estimation routine. Quantum Phase Estimation
DysonSeriesLCU A Dyson Series LCU Qubrick with a unary version of the truncation register.
DysonSeriesPrepareBinary A modified version of the Dyson series expansion as in "Hamiltonian Simulation in the Interaction Picture" (arXiv:1805.00675 ⧉).
DysonSeriesPrepareUnary A modified version of the Dyson series expansion as in "Hamiltonian Simulation in the Interaction Picture" (arXiv:1805.00675 ⧉).
DysonSeriesSelectBinary A modified version of the Dyson series expansion as in "Hamiltonian Simulation in the Interaction Picture" (arXiv:1805.00675 ⧉).
DysonSeriesSelectUnary A modified version of the Dyson series expansion as in "Hamiltonian Simulation in the Interaction Picture" (arXiv:1805.00675 ⧉).
EfficientMultiplexedRotations Decomposition of uniformly controlled rotations to single-qubit rotation + CNOTs.
FlagCollisionsBinary A FlagCollisionsBinary Qubrick to reflect (time) collisions.
FlagCollisionsUnary A FlagCollisions Qubrick to reflect (time) collisions.
FlattenedRotArray (experimental) Implements a state sub-preparation using a single set of multiplexed rotations.
GeneralMultiplexedRotationNaive Routine for implementing multiplexed rotations, allowing for various tradeoffs.
GeneralMultiplexedRotationViaQROM Optimized implementation of multiplexed rotations using QROM for angle loading.
GivensPPRs Applies the Givens rotation using Pauli Product Rotations.
GivensRZs Implements a Givens rotation using RZ gates.
GivensRotationFusedAdder Implements a Givens rotation using a fused quantum adder.
GivensRotationTwoAdders Implements a Givens rotation using two quantum adders.
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 (experimental) 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.
HouseholderMPSLoading (experimental) Qubrick for loading the MPS on a quantum computer, based on HouseholderUnitarySynthesis.
HouseholderUnitarySynthesis (experimental) 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, Iterative QPE
LCU Implements a general block encoding using Linear Combination of Unitaries (LCU). Amplitude Amplification, LCU Qubitization, Quantum Phase Estimation
LKSMultiplexor Multiplexor using data-lookup oracles.
LKSStatePrep State preparation detailed in "Trading T gates for dirty qubits in state preparation and unitary synthesis" (arXiv:1812.00954 ⧉).
MajoranaFermionOperator The Majorana Fermion Operator shown in Fig. 9 of "Encoding Electronic Spectra in Quantum Circuits with Linear T Complexity" (arXiv:1805.03662 ⧉).
MultiplexedAliasSampling Implements the multiplexed alias sampling subroutine for multiplexed arbitrary state preparation.
MultiplexedRealUSP Qubrick to perform multiplexed USP. Multiplexed USP
MultiplexedSingleQubitRotationViaQROM (experimental) Multiplexor using data-lookup oracles.
MultiplexedSparseDataLookup Multiplexed data lookup oracle in Fig. 43 of "Quantum computing enhanced computational catalysis" (arXiv:2007.14460 ⧉).
MultiplexedUSP Qubrick to perform multiplexed USP. Multiplexed USP
NaiveMultiplexedRotations Controlled rotations from "Transformation of quantum states using uniformly controlled rotations" (arXiv:quant-ph/0407010 ⧉).
NaiveMultiplexedSingleQubitRotation (experimental) Controlled rotations from "Transformation of quantum states using uniformly controlled rotations" (arXiv:quant-ph/0407010 ⧉).
NaivePhaseGradient Implement a phase gradient with a specified base angle.
OneAncMultiplexor \(\text{SELECT}\) operator using a single, clean auxiliary qubit.
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.
PauliToPauliBasisTransform (experimental) 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.
PrepareClockState Prepares a clock state.
PrepareNaive State preparation based on the routine in "Transformation of quantum states using uniformly controlled rotations" (arXiv:quant-ph/0407010 ⧉). Amplitude Amplification, LCU Qubitization, Quantum Phase Estimation
PrepareWState Prepares a W state.
PrepareWStatePowerTwo Prepares a W state for power of two target size.
ProgrammableRotArray (experimental) 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 Functions for QPE, Trotterization, Quantum Phase Estimation, Iterative QPE
Qubitization Canonical qubitization iterate. Amplitude Amplification, LCU Qubitization, Data Loaders QROM, Quantum Phase Estimation
QubitizedWalkOperator Qubitization iterate. Quantum Phase Estimation
RealUSP Qubrick for performing Uniform State Preparation. Uniform State Preparation, Multiplexed USP
RectWindow Rectangular/Dirichlet window. This is the default window function for the textbook QPE. Window Functions for QPE
RotationViaPhaseGradientAddition (experimental) Coherently-applies WB qc.phase rotations via phase gradient addition.
RotationViaSingleQubitUnitaries (experimental) Compute circuit for rotations via controlled single-qubit rotations.
Rz Implementation of a direct Rz rotation using the built-in rz method. Window Functions for QPE, Quantum Phase Estimation, Iterative QPE
RzAdder Implementation of Rz rotation using an adder-based approach.
SawtoothMultiplexor Unoptimized multiplexor from Fig. 5 in "Encoding Electronic Spectra in Quantum Circuits with Linear T Complexity" (arXiv:1805.03662 ⧉).
SawtoothSelect Unoptimized select from Fig. 5 in "Encoding Electronic Spectra in Quantum Circuits with Linear T Complexity" (arXiv:1805.03662 ⧉). LCU Qubitization, Data Loaders QROM
SelectNaive Most naïve version of \(\text{SELECT}\) possible. Amplitude Amplification, LCU Qubitization, Data Loaders QROM, Quantum Phase Estimation, Multiplexed USP
SelectOneAnc \(\text{SELECT}\) operator using a single, clean auxiliary qubit. 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. Data Loaders QROM, SwapUp Inject
TrotterQuery Qubrick for implementing a Suzuki-Trotter approximation of an exponentiated Hamiltonian. Trotterization
USP Qubrick for performing Uniform State Preparation. Uniform State Preparation, Data Loaders QROM, Multiplexed USP
UnaryQROM A unary-encoded data-loader.
VectorAddition Qubrick for adding (or subtracting) the components of two vectors of Qubits.
WindowEmulator Constructor for window emulator. Window Functions for QPE
WindowStatePrep General class for simulating window state via state prep. Window Functions for QPE
ZeroAncMultiplexor Most naïve version of multiplexing possible. Multiplexed USP
ZeroAncillaUSP Qubrick for performing Uniform State Preparation without auxiliary qubits. Uniform State Preparation, Data Loaders QROM