You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This check-in improves implementation of adjoin variant of Select
operation (Unlookup operation). Previously it was based on May [2019
paper by Craig Gidney](https://arxiv.org/abs/1905.07682), and this
proposed implementation is based on [2025 paper by Craig
Gidney](https://arxiv.org/abs/2505.15917).
The implementation of Unlookup is measurement-based with phase
correction via Phase Lookup operation described in the aforementioned
paper. Phase Lookup is implemented by splitting address register and
computing power products for both halves. Then the necessary phase
corrections are applied and power products are uncomputed.
This implementation uses fast Boolean Mobius transform instead of matrix
multiplication as in the paper to convert classical data from truth
table representation to coefficients of an algebraic normal form over
GF(2) field. This results in simpler code.
A test is added to check that address register remains in correct state
after uncomputation.
This implementation may reduce required resources to uncompute lookup
operation. As one example, the circuit to uncompute **one particular
case** with previous and proposed approaches. This is a highly dynamic
algorithm that uses results of measurements to apply gates
conditionally; actual execution trace and actual savings may vary.
Before:
<img width="1456" height="476" alt="Unlookup"
src="https://github.com/user-attachments/assets/0e2a28f0-0298-4ef8-be51-fc02ccd85b02"
/>
After:
<img width="822" height="640" alt="Phaseup"
src="https://github.com/user-attachments/assets/96305720-ae1f-4dad-bc40-dcd990bcb125"
/>
---------
Co-authored-by: Dmitry Vasilevsky <[email protected]>
0 commit comments