We're happy to announce the release of Qualtran v0.7 containing a new rotation synthesis module, support for classical data in quantum programs, quantum standard library improvements, and more.
Rotation synthesis
The rotation synthesis module provides a robust, high-performance toolkit for compiling
Key Features:
- Implementation of four key synthesis protocols: diagonal (ancilla-free), mixed diagonal, fallback ("repeat-until-success"), and mixed fallback.
- Arbitrary precision: the module is backed by
mpmathand supports arbitrarily small target diamond norm distances. See the docs for notes on choosing the number of digits of precision. - The resulting circuits can be exported as Cirq circuits and Quirk links.
Implemented by @NoureldinYosri in #1749 #1750 #1751.
Classical data and measurement-based uncomputation
Qualtran now supports classical data as part of the compute graph.
- Measurement operations take a
QBitto aCBit. - There are classical versions of each quantum data type, e.g.
CInt,CFxp, etc. #1584 #1717 - Programs containing measurement and classical data can be simulated using the new superoperator tensor simulator. #1596
- A new "Phased Classical" simulation protocol supports simulation of circuits consisting of classical-reversible logic (
X,CNOT,Toffoli) as well as diagonal gates (T,Z,CZ). Combined with theMeasureXgate, this simulator can be used to fuzz-test measurement-based uncomputation. #1590 #1682 #1698
Breaking changes
BloqAsCirqGateis now only acirq.GateandCirqGateAsBloqis now only aBloqfor conceptual consistency. #1603.
Quantum Standard Library Fixes
We continue to aspire to have a tested, accurate standard library of quantum algorithms. The following changes were made to improve the correctness of quantum algorithms included in qualtran.bloqs.
- Fix bug in classical simulation of
Addwith mixed signed/unsigned integers by @mpharrigan in #1711 - Fix additional bug in
ECAddby @fpapa250 in #1666 - Consistent
Toffoli.controlled()by @mpharrigan in #1771 #1712 - Fix
RowColumnOracleSignature by @petim0 in #1780 - Fix
Identity's ctrl_adder by @petim0 in #1781 LinearCombinaisonadjoint is more general and checks are correct by @petim0 in #1784- Override adjoint for
ControlledAddOrSubtractby @anurudhp in #1735 - Update
GF2Inverseto use the decomposition from "Concrete quantum cryptanalysisof binary elliptic curves" by @NoureldinYosri in #1728 - replace synthesize_reduction_matrix_q with GF2ShiftRight in GF2Multipication by @NoureldinYosri in #1686
Resource estimation changes: The default factor is now four T gates per CSwap #1642. Qubit counting now uses greedy_topological_sort to reduce idle qubits in allocating circuits #1641.
New Bloqs in the Standard Library
We continue to expand the available bloqs in the standard library of quantum algorithms and subroutines.
- [QGFPoly] Add
QGFPoly, a new data type to represent polynomials over galois fields by @tanujkhattar in #1620 - [QGFPoly] Add
GF2PolyAddK,GFPolySplitandGFPolyJoinbloqs by @tanujkhattar in #1622 - [QGFPoly] Add
GF2PolyAddbloq for quantum-quantum addition of polynomials overGF(2^m)by @tanujkhattar in #1624 #1681 #1705 #1727 - Add
GF2MulMBUCBloq by @tanujkhattar in #1718 #1726 - Implement Kikuchi graph oracles and block-encoding by @anurudhp in #1555
- Add bloq for the Guided Hamiltonian Problem by @anurudhp in #1695
- Add
Alwaysmetabloq to simplify decompositions with compute-uncompute pairs by @anurudhp in #1605 - Add
Split2/Join2for simpler partitioning by @mpharrigan in #1730
Other improvements
New Contributors
- @pqvr made their first contribution in #1643
- @ahkatlio made their first contribution in #1651
- @micpap25 made their first contribution in #1652
- @maxglick made their first contribution in #1739
- @amandashoe made their first contribution in #1753
- @petim0 made their first contribution in #1780
Full Changelog: v0.6.0...v0.7.0