Releases: MSRudolph/PauliPropagation.jl
Releases · MSRudolph/PauliPropagation.jl
v0.7.2
Release Notes
- Fix
getcoeff()behavior forDictStorageterm sums.PauliSumwas 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 inpsum, not onlynew_psum. Nownew_psum === psum. Similarly fortruncate!()andmerge!(). - Implement
extractsum!()in PropagationBase as the intended way of extracing the active main sum on a propagation cache. - Standardize
==and\approxfor allAbstractTermSum. - Implement
mult!()for propagation caches. - Implement
merge()andtruncate()
v0.7.1
v0.7.0
New Features
VectorPauliSumpropagation which is natively multi-threaded in propagation.- An experimental
PauliPropagationCUDAextension that allows PauliRotation gates to execute on the GPU. - Schrödinger picture propagation for some gates, including
PauliRotation,CliffordGate, andPauliNoise. - 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
AbstractTermSumandAbstractPauliSumas abstract types with uniting behavior. Useful defaults available for Dict and Vector storage. - Introduced propagation caches and the abstract type
AbstractPropagationCache. These wrap evolvingAbstractTermSumobjects 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!()andapplytoall!()was changed for to receive propagation caches and the optional parameter as last argument. applyandadd!()was removed.- Merging functions
mergeandempty!()and below and truncation functionschecktruncationsonall!()and below where simplified and reworked intomerge!()andtruncate!().
v0.6.0
v0.5.2
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
getpauliandsetpaulifor multiple sites by @teng10 in #112
New Contributors
- @alam-faisal made their first contribution in #120
Full Changelog: v0.5.1...v0.5.2
v0.5.1
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
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
- @ahkatlio made their first contribution in #98
- @Fe-r-oz made their first contribution in #101
- @isaachyw made their first contribution in #103
- @zmorrell made their first contribution in #105
- @JuliaGerecke made their first contribution in #109
Full Changelog: v0.4.1...v0.5.0
v0.4.1
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
Breaking Changes
overlapwithpaulisum()now has an extra factor of2^nqubitsto be in line with otheroverlapfunctions.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*betweenPauliSumandPauliString - Automatic promotion of types for these operations
- Automatic wrapping of coefficients into
PauliFreqTrackerwhenmax_sinormax_freqare notInf.
New Contributors
- @ErikWeiss made their first contribution in #80
Full Changelog: v0.3.0...v0.4.0
v0.3.0
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