Recent Releases of qualtran

qualtran - Qualtran v0.6

We're proud to announce the latest minor release of Qualtran. This release brings infrastructure improvements for writing controlled bloqs, lays the groundwork for more interoperability with other tools, and contains major additions and improvements to our library of bloqs.

Easier and optimized controlled bloqs

ControlledViaAnd was included in the previous release of Qualtran. For multi-qubit control specs, it will compute the conditional once and use single-bit controls in subbloqs. The older Controlled metabloq uses a "total control" decomposition where each subbloq is controlled according to the requested control spec (no matter how complicated it is).

In this release, the default Bloq.get_ctrl_system will use a ladder of And to reduce multiple controls to a single control bit for complex control specs. This is a more optimized default. Bloq authors will always be free to override Bloq.get_ctrl_system for complete flexibility. With this change, more cases can be adequately handled by the automatic default.

This overhaul was contributed by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1373 https://github.com/quantumlib/Qualtran/pull/1456 https://github.com/quantumlib/Qualtran/pull/1451 https://github.com/quantumlib/Qualtran/pull/1481 https://github.com/quantumlib/Qualtran/pull/1490, and https://github.com/quantumlib/Qualtran/pull/1491.

Backwards-incompatible changes

We always strive to avoid any breaking changes in expressing or analyzing quantum algorithms using the public classes, methods, and functions in the qualtran namespace (outside of qualtran.bloqs). However, prior to a 1.0 release, we may make breaking changes that would otherwise accumulate too much tech debt. This release contains some minor incompatible changes, detailed (with alternatives) below.

Note that the qualtran.bloqs library of subroutines will be under active development for the foreseeable future, and we will make incompatible changes to the quantum algorithms for correctness and accuracy following quantum algorithms research results.

  • Bloq.pretty_name has been removed as a base-class method. Override __str__ and use str() to get a string representation of a bloq, by @dstrain115 in https://github.com/quantumlib/Qualtran/pull/1402
  • The deprecated qualtran.drawing.GraphvizCounts class has been removed. Convenience drawing methods had already been switched to use the replacement, GraphvizCallGraph, by @dstrain115 in https://github.com/quantumlib/Qualtran/pull/1410
  • The deprecated Bloq._t_complexity_ override has been removed as a base-class method. Override Bloq.my_static_costs instead. The QECGatesCost estimator will still respect _t_complexity_ methods on derived classes if set to legacy=True mode, by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1377
  • Controlled meta-bloqs can only be used to control bloqs with all thru-registers. The meaning of a controlled allocation is ill-defined, by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1305
  • The default fallback for Bloq.get_ctrl_system will use ControlledViaAnd, see the above section in these release notes.
  • And is now an atomic, leaf bloq. The circuit decomposition in terms of T and measurement-based uncomputation is still available via And.to_clifford_t_circuit(), by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1513

Interoperability and devops

This release includes dependency adjustments to support interoperability with other quantum tools. This release adds a new dependency PennyLane, but full interoperability requires pennylane>=0.41, which is not yet released at the time of writing. A runtime check is performed, so if you manually update your environment with pennylane>=0.41, the full functionality will be enabled. This logic was included in Qualtran v0.6.1. The prior tag v0.6.0 depended on a pre-release that is not available from PyPI, so qualtran==0.6.0 is not available on PyPI.

  • [Bartiq] upgraded to version 0.6.0 by @mstechly in https://github.com/quantumlib/Qualtran/pull/1409
  • [Cirq] dependency is no longer pinned to a particular version by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1460
  • [Cirq, bugfix] Allow computing cost from decomposition of Cirq gates by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1510
  • [QREF] Add option to generate QREF from callgraphs by @mstechly in https://github.com/quantumlib/Qualtran/pull/1522
  • [PennyLane] Qualtran bloqs to PennyLane by @austingmhuang in https://github.com/quantumlib/Qualtran/pull/1559
  • [PyZX] Dependency added for future interoperability, by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1562

Additionally, our repository has been spruced up with a new README, citation information, and dev tools by @mhucka in https://github.com/quantumlib/Qualtran/pull/1568 https://github.com/quantumlib/Qualtran/pull/1569 https://github.com/quantumlib/Qualtran/pull/1571 https://github.com/quantumlib/Qualtran/pull/1573 https://github.com/quantumlib/Qualtran/pull/1572 https://github.com/quantumlib/Qualtran/pull/1597 https://github.com/quantumlib/Qualtran/pull/1575 https://github.com/quantumlib/Qualtran/pull/1580, https://github.com/quantumlib/Qualtran/pull/1598, and https://github.com/quantumlib/Qualtran/pull/1601

Bloq library additions

Our library of quantum subroutines continues to grow, with substantial additions for doing arithmetic in various fields.

  • create DirtyOutOfPlaceMontgomeryModMul by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1395
  • Add Equals() bloq by @fpapa250 in https://github.com/quantumlib/Qualtran/pull/1411
  • Add QGF data type for Galois Fields by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1433
  • Add GF2Multiplication bloq for multiplication over GF($2^m$) by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1436
  • Add GF2Add bloq for addition over GF($2^m$) by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1438
  • Add GF2Square bloq for squaring over GF($2^m$) by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1441
  • Add GF2Inverse bloq for computing inverse over GF($2^m$) by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1442
  • Add GF2AddK for in place addition of a constant over GF($2^m$) by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1447
  • PlusEqualProduct version of GFMultiplication for GF($2^m$) by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1457
  • Optimized implementation of GF2Inverse by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1459
  • Implement CtrlScaleModAdd and CModAddK bloqs for Modular Exponentiation by @fpapa250 in https://github.com/quantumlib/Qualtran/pull/1432
  • Add RSA Phase Estimate Bloq and Move ModExp to rsa/ subdirectory by @fpapa250 in https://github.com/quantumlib/Qualtran/pull/1428
  • Create linear half comparison bloqs by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1408
  • Add ECAdd() Bloq by @fpapa250 in https://github.com/quantumlib/Qualtran/pull/1425
  • Create KaliskiModInverse by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1464
  • Add SparseMatrixHermitian block-encoding by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1479
  • Add Decomposition of ECWindowAddR by @fpapa250 in https://github.com/quantumlib/Qualtran/pull/1477
  • Deprecate MultiControlPauli by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1492
  • Add list primitives from Quartic speedups paper by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1503
  • Implement Kikuchi guiding state preparation by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1504
  • Add bloq for constant polynomial multiplication modulo in GF(2) by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1516
  • Add bloq for Binary Polynomial Multiplication by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1554
  • Single-qubit and Controlled Z rotations by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1455

Bloq library enhancements

The existing library has been enhanced with more accurate resource estimation, bug fixes, and bespoke controlled versions of more bloqs.

  • Add my_static_costs override for accurate QubitCounts for qrom bloqs by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1414
  • Add serialization for ECPoint arg type. by @fpapa250 in https://github.com/quantumlib/Qualtran/pull/1412
  • Make intermediate additions unsigned in ModAdd by @fpapa250 in https://github.com/quantumlib/Qualtran/pull/1424
  • Add classical action test for ModAdd by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1427
  • fix call graph for Equals by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1429
  • sparse state prep: allow user to pick target bitsize if needed by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1430
  • Update THC Prepare to use QROAMClean by @fdmalone in https://github.com/quantumlib/Qualtran/pull/1378
  • Bugfix in Partition to support QGF type registers by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1448
  • Override KaliskiModInverse.adjoint by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1483
  • Modify KaliskiModInverse to support zero by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1486
  • Replace ModInv shim with KaliskiModInverse in ECAdd bloq by @fpapa250 in https://github.com/quantumlib/Qualtran/pull/1485
  • Upgrade AddK - use dtype and simplify controls by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1493
  • Fix bug in KaliskiStep3 and add tests for all steps by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1496
  • Fix symbolic call graphs for factoring phase estimates by @fpapa250 in https://github.com/quantumlib/Qualtran/pull/1497
  • Self adjoint for MCX and MCZ by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1502
  • notebooks for ZPowConstViaPhaseGradient and RzViaPhaseGradient by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1507
  • First pass at fixing chemistry costs to use QECGatesCost by @fdmalone in https://github.com/quantumlib/Qualtran/pull/1505
  • Be a bit careful about complexity of the sparse Hamiltonian by @fdmalone in https://github.com/quantumlib/Qualtran/pull/1512
  • restrict classical action of certain arithmetic bloqs by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1518
  • Fix CSwap bloq in mod division by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1528
  • Fix memory overflow in sparse matrix stress test by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1529
  • Update gf2.MultiplyPolyByConstantMod to support QGF dtype by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1533
  • make QGF with irreducible_poly=None compatible with QGF with the correct poly by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1540
  • Add a modulus parameter to QMontgomeryUInt by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1543
  • Override ctrl system for Toffoli by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1552
  • BugFix in adjoint of SynthesizeLRCircuit by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1553
  • Allow wire_symbol() to handle multiple named selection registers. by @dandragona-dev in https://github.com/quantumlib/Qualtran/pull/1563
  • Fix testqfttext_book following #1455 by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1574
  • Add Add.controlled() -> CAdd by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1576
  • Fix bugs in ECAdd bloq by @fpapa250 in https://github.com/quantumlib/Qualtran/pull/1489
  • Support spare Prepare with logblocksize=0 by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1578
  • Fix expression for prepare.num_lt by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1577
  • Add ctrl system for LCUBlockEncoding by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1593
  • Add ctrl system for LinearCombination by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1595

New Contributors

  • @shab5 made their first contribution in https://github.com/quantumlib/Qualtran/pull/1444
  • @max-radin made their first contribution in https://github.com/quantumlib/Qualtran/pull/1521
  • @mhucka made their first contribution in https://github.com/quantumlib/Qualtran/pull/1568
  • @dandragona-dev made their first contribution in https://github.com/quantumlib/Qualtran/pull/1563
  • @austingmhuang made their first contribution in https://github.com/quantumlib/Qualtran/pull/1559

Full Changelog: https://github.com/quantumlib/Qualtran/compare/v0.5.0...v0.6.0

- Python
Published by mpharrigan about 1 year ago

qualtran - Qualtran v0.5

This preview release of Qualtran contains many improvements and new bloqs.

This is the last planned release before the 1.0 release of Qualtran. 1.0 will bring stronger stability guarantees to the core Qualtran framework: namely everything in the qualtran namespace outside of qualtran.bloqs. The library of bloqs will continue to be extended and edited for greater breadth and accuracy. This development release contains some backwards-incompatible changes to prepare for 1.0. Read on for more information

Bartiq and QREF integration

This release includes interoperability with Bartiq via the QREF format implemented by @mstechly in https://github.com/quantumlib/Qualtran/pull/1194. Interoperability between quantum algorithms tooling is crucial to accelerate progress in the field.

Qualtran software paper

We've authored a manuscript describing the design of Qualtran, some important algorithmic primitives contained in qualtran.bloqs, and case studies on problems of interest. If you use Qualtran in your own work, please cite:

Expressing and Analyzing Quantum Algorithms with Qualtran. arXiv:2409.04643.

Gate counting and leaf bloqs

We've unified the gate counting framework under the qualtran.resource_counting framework. * The _t_complexity_ annotation is deprecated. Please continue to annotate callees with build_call_graph or use my_static_costs to provide a static override. * The cirq_interop.t_complexity function no longer uses any custom logic. Rather, it goes via qualtran.resource.estimation tools; specifically the QECGatesCost cost key. There should be no observable change to the computed costs. https://github.com/quantumlib/Qualtran/pull/1313 https://github.com/quantumlib/Qualtran/pull/1359 https://github.com/quantumlib/Qualtran/pull/1323 https://github.com/quantumlib/Qualtran/pull/1333 * Toffoli is now an atomic, leaf bloq https://github.com/quantumlib/Qualtran/pull/1388 * CSwap is now an atomic leaf bloq https://github.com/quantumlib/Qualtran/pull/1393 * And will become an atomic leaf bloq https://github.com/quantumlib/Qualtran/pull/1347 * The GraphvizCallGraph.from_bloq helper method can draw call graphs with costs https://github.com/quantumlib/Qualtran/pull/1254

Tensor simulation overhaul

The tensor simulation protocol was changed to support efficient simulation of a larger class of circuits, including shallow-but-wide circuits. Qualtran can simulate a 2x32-qubit adder using only 6 qubit's worth of RAM for a specific input/output ket following the changes.

  • Overhaul implemented in https://github.com/quantumlib/Qualtran/pull/1070. Tensor simulation will always try to flatten as much as possible before starting the contraction. The semantics of my_tensors have changed. If you are overriding this method to support tensor simulation, consider relying directly on the decomposition or read the documentation for full details on how to implement the new method.
  • Changes to .flatten in https://github.com/quantumlib/Qualtran/pull/1061. Flattening will no longer raise an error if a bloq doesn't have a decomposition. .flatten() with no arguments will flatten as much as possible.

Physical cost models

The qualtran.surface_code module has been refactored so both Beverland- and Gidney-derived models follow the same interface.

  • Code changes in https://github.com/quantumlib/Qualtran/pull/1141 https://github.com/quantumlib/Qualtran/pull/1154 https://github.com/quantumlib/Qualtran/pull/1157 https://github.com/quantumlib/Qualtran/pull/1183 https://github.com/quantumlib/Qualtran/pull/1185
  • qualtran.resource_estimation.GateCounts is used directly. AlgorithmSummary and MagicCount dataclasses have been removed as redundant.

Other framework changes

  • The bit_tools module has been removed and replaced with QDType features by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1041. Please migrate your code to use QDType methods to convert between bits. New, vectorized from_bits and to_bits by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1199
  • Greedy topological sort of the binst graph to minimize qubit allocations / deallocations by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1099
  • Cirq interop overhaul/bugfixes @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1100
  • QFxp: use integer values for classical sim instead of fxpmath.Fxp by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1204
  • Change return type of buildcallgraph to set | dict by @dstrain115 in https://github.com/quantumlib/Qualtran/pull/1356 https://github.com/quantumlib/Qualtran/pull/1392
  • pretty_name is deprecated https://github.com/quantumlib/Qualtran/pull/1340. Use __str__.
  • Bloq.supports_decompose_bloq has been removed in https://github.com/quantumlib/Qualtran/pull/1382. Use try/except.
  • BoundedQUInt has been renamed to BQUInt by @fdmalone in https://github.com/quantumlib/Qualtran/pull/1363
  • Better support for symbolics in Signature by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1353 and @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1301
  • param ctrl_spec of get_ctrl_system will always be non-None by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1209
  • Zero-bitsize connections are explicitly not allowed by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1105

New and updated bloqs

  • Implement decomposition for BitonicSort by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1089
  • Add AutoPartition and BloqBuilder.add_and_partition to fit bloqs together whose registers don't quite match by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1086
  • Implement classical action of Cast bloq by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1093
  • Add Unitary and TensorProduct block encodings by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1094
  • GlobalPhase: use exponent, and implement controlled (ZPowGate) by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1117
  • Create ApplyLthBloq as a simple SELECT oracle by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1107
  • Add Product block encoding by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1106
  • Add Phase block encoding by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1129
  • Add LinearCombination block encoding by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1133
  • Permutation Bloq by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1110
  • Sparse state preparation via alias sampling by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1067
  • Implement Negate (two's complement) by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1144
  • Add Xor bloq by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1149
  • Add InvertRealNumber bloq by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1151
  • Add BitwiseNot by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1161
  • Add SubtractFrom to subtract from a register in place by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1158
  • Switch SubtractFrom to use BitwiseNot by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1164
  • Create SparseMatrix block encoding by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1143
  • Optimize gate count of Subtract to n-1 Toffolis by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1057
  • CHadamard by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1114
  • CYGate by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1115
  • CZ by @mpharrigan in https://github.com/quantumlib/Qualtran/pull/1116
  • Disallow zero sized registers in QROMs and PRGAViaPhaseGradient by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1160
  • Add ExplicitEntryOracle to block encode a matrix by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1166
  • ControlledAddOrSubtract Bloq by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1145
  • Update classical action of addition gates and fix classical action bug in Join by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1174
  • Implement generic MultiControlledBloq using single-controlled subbloq + And ladder. by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1155
  • ControlledViaAnd tests and bloq examples by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1182
  • Add SignExtend for two's complement sign extension by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1162
  • Add SymmetricBanded matrix block encoding by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1177
  • Add ArcSin bloq by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1188
  • Add symbolic call graph for SparseMatrix by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1193
  • Revamp ChebyshevPolynomial by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1213
  • Bitwise bloqs are self adjoint by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1220
  • Update QROAM in chemistry prepare bloqs to use clean ancilla by @fdmalone in https://github.com/quantumlib/Qualtran/pull/1226
  • Add ScaledChebyshevPolynomial bloq by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1231
  • Add an optimizer for LinearCombinations by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1232
  • Add FFT QSP by @Epsilon1024 in https://github.com/quantumlib/Qualtran/pull/1078
  • RzViaPhaseGradient by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1147
  • Add notebook tests for block encodings by @charlesyuan314 in https://github.com/quantumlib/Qualtran/pull/1235
  • Make QubitizationWalkOperator expect a BlockEncoding instead of Select and Prepare by @fdmalone in https://github.com/quantumlib/Qualtran/pull/1132
  • Controlled-Addition implementation by @skushnir123 in https://github.com/quantumlib/Qualtran/pull/864
  • Improve support for CAdd by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1277
  • Support symbolic decomposition for state prep via alias sampling by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1084
  • Rewrite SelectSwapQROM using build_composite_bloq by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1276
  • Add shim for measurement gate by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1287
  • Add explicit adjoint for SwapWithZero and classical simulation tests for decomposition of SelectSwapQROM by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1285
  • Sparse state preparation via Dense + Permute by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1205
  • Add QROAMClean and QROAMCleanAdjoint bloqs for data loading by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1291
  • Create controlled greater than bloq by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1283
  • Create CModAdd by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1295
  • Add QROAMCleanAdjointWrapper to match signature of QROAMClean and delegate implementation to QROAMCleanAdjoint by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1324
  • Refactor QPE bloqs by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1297
  • ZPow (known angle) using phase gradient by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1275
  • Add ProgrammableAncillaRotation with costs by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1136
  • Make Identity an n qubit bloq by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1327
  • Create ModNeg and CModNeg by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1300
  • Add KaiserWindowState bloq to prepare initial state for high confidence QPE by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1331
  • Use XorK bloq instead of CNOTs to load data in QROM by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1335
  • Create ModSub and CModSub by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1332
  • Remove factoring/mod_sub to reduce code duplication by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1338
  • Use QROAMClean in Chemistry Sparse Prepare bloq by @fdmalone in https://github.com/quantumlib/Qualtran/pull/1316
  • Add a test util for classical action and refactor factoring/mod_mul by @NoureldinYosri in https://github.com/quantumlib/Qualtran/pull/1339
  • HammingWeightCompute: replace ArbitraryClifford with CNOT, support symbolic bitsizes by @anurudhp in https://github.com/quantumlib/Qualtran/pull/1355
  • Make symbolic call graph and costs of ZPowUsingProgrammedAncilla more accurate by @tanujkhattar in https://github.com/quantumlib/Qualtran/pull/1389

Full Changelog

Can be found on GitHub: https://github.com/quantumlib/Qualtran/compare/v0.4.1...v0.5.0

- Python
Published by mpharrigan over 1 year ago

qualtran - Qualtran v0.4

We're pleased to announce the latest beta release of Qualtran: v0.4.0. This release includes many improvements and fixes throughout the library, but some highlights include:

Highlights

  • Support for arbitrary CostKeys: compute gate counts, qubit counts, or define your own cost
  • Many more bloqs support symbolic parameters and cost estimates
  • Bugfixes for using Qualtran on Windows
  • Better control for how bloqs display themselves in diagrams
  • Mypy type-checking is enabled and enforced library-wide.

Full Changelog: https://github.com/quantumlib/Qualtran/compare/v0.3.0...v0.4.0

- Python
Published by mpharrigan almost 2 years ago

qualtran - Qualtran v0.3.0

This is an incremental beta release of Qualtran.

Highlights

  • Quantum data types. Registers now have types.
  • T-complexity protocol improvements.
  • More bloqs!

Full Changelog: https://github.com/quantumlib/Qualtran/compare/v0.2.0...v0.3.0

- Python
Published by mpharrigan about 2 years ago

qualtran - Qualtran v0.2.0

This is an incremental beta release of Qualtran.

Highlights include: - Improved Cirq interoperability, and the absorption of the-package-formerly-known-as Cirq-FT into the Qualtran repository. - More chemistry bloqs. - The Adjoint protocol

Full Changelog: https://github.com/quantumlib/Qualtran/compare/v0.1.0...v0.2.0

- Python
Published by mpharrigan over 2 years ago

qualtran - Qualtran v0.1.0

This is the initial, experimental preview release of Qualtran

- Python
Published by mpharrigan almost 3 years ago