Skip to content

Releases: MSRudolph/PauliPropagation.jl

v0.7.2

23 Feb 20:34
ce6e7b4

Choose a tag to compare

Release Notes

  • Fix getcoeff() behavior for DictStorage term sums. PauliSum was affected by this and had slow lookup.
  • Add commutator between two VectorPauliSums
  • In-place propagation without return, i.e., new_psum = propagate!(circuit, psum, params) now has the final results in psum, not only new_psum. Now new_psum === psum. Similarly for truncate!() and merge!().
  • Implement extractsum!() in PropagationBase as the intended way of extracing the active main sum on a propagation cache.
  • Standardize == and \approx for all AbstractTermSum.
  • Implement mult!() for propagation caches.
  • Implement merge() and truncate()

v0.7.1

09 Feb 12:45
66b7e94

Choose a tag to compare

Performance fixes:

  • dispatch to Base.iterate() for PauliSum
  • replace Pauli rotation gate with gate bitmask in commutes()
  • inline iterate(), add!(), set!()

v0.7.0

04 Feb 21:36
e93d27c

Choose a tag to compare

New Features

  • VectorPauliSum propagation which is natively multi-threaded in propagation.
  • An experimental PauliPropagationCUDA extension that allows PauliRotation gates to execute on the GPU.
  • Schrödinger picture propagation for some gates, including PauliRotation, CliffordGate, and PauliNoise.
  • ImaginaryPauliRotation gates in the Schrödinger picture.

Design changes

  • Large chunks of the propagation code was migrated into PauliPropagation.PropagationBase in preparation for moving it into its own PropagationBase.jl repo.
  • Introduced AbstractTermSum and AbstractPauliSum as abstract types with uniting behavior. Useful defaults available for Dict and Vector storage.
  • Introduced propagation caches and the abstract type AbstractPropagationCache. These wrap evolving AbstractTermSum objects with optional additional objects necessary for efficient propagation.

Breaking Changes

Breaking changes do not affect high-level users. Only users defining custom gates and propagation subroutines.

  • The argument order and argument types of applymergetruncate!() and applytoall!() was changed for to receive propagation caches and the optional parameter as last argument.
  • applyandadd!() was removed.
  • Merging functions mergeandempty!() and below and truncation functions checktruncationsonall!() and below where simplified and reworked into merge!() and truncate!().

v0.6.0

15 Dec 08:59
0fdbbb4

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.5.2...v0.6.0

v0.5.2

04 Nov 13:18
48b3457

Choose a tag to compare

What's Changed

  • Convert the coefficient types for PauliString and PauliSum by @teng10 in #115
  • Fix overlapwithcomputational() for empty PauliSum by @alam-faisal in #120
  • Improve getpauli and setpauli for multiple sites by @teng10 in #112

New Contributors

Full Changelog: v0.5.1...v0.5.2

v0.5.1

21 Oct 07:58
2d0a7fb

Choose a tag to compare

What's Changed

  • fix bug in amplitude damping noise where coeff would not be multiplied by @MSRudolph in #118

Full Changelog: v0.5.0...v0.5.1

v0.5.0

02 Sep 04:48
a12d76f

Choose a tag to compare

Breaking Changes

  • Update version support infromation to match LTS

Further Changes

  • New propagation visualization capabilities
  • External correctness tests via Yao.jl
  • Python usage example notebook via JuliaCall
  • Error mitigation example notebook
  • Improved O(1) pauli product function
  • Add and use pauliprod() function between PauliSum's
  • Fix a bug where the minus function would work in-place
  • Fix bugs in test that would sometimes falsely report errors

New Contributors

Full Changelog: v0.4.1...v0.5.0

v0.4.1

28 May 12:10
bd920ed

Choose a tag to compare

What's Changed

  • Fixed a bug in automatic conversion checks for PauliFreqType coefficients when max_freq or max_sins are defined.

Full Changelog: v0.4.0...v0.4.1

v0.4.0

27 May 17:54
a2ca0f9

Choose a tag to compare

Breaking Changes

  • overlapwithpaulisum() now has an extra factor of 2^nqubits to be in line with other overlap functions. scalarproduct() takes its place instead.
  • The Y Clifford gate definition had a missing minus sign.
  • Removal of some toy functions like commutes() between two symbols.
  • The low-level truncation functions are no longer exported

Further Changes

  • Many docs clarifications or removals for functions exposed on the docs page
  • Addition of functions like + and * between PauliSum and PauliString
  • Automatic promotion of types for these operations
  • Automatic wrapping of coefficients into PauliFreqTracker when max_sin or max_freq are not Inf.

New Contributors

Full Changelog: v0.3.0...v0.4.0

v0.3.0

08 Apr 18:34
7fb65ea

Choose a tag to compare

What's Changed

  • Rework Pauli integer types by @MSRudolph in #73. Rework our integer types to be custom defined to the next possible bit length with BitIntegers.jl, pirate a value-based hash function, remove the union type constraint for PauliStringType and PauliType
  • Compiler safe cliffordmap by @MSRudolph in #69
  • Rename and do not export Pauli damping by @MSRudolph in #60

Full Changelog: v0.2.1...v0.3.0