v1.3.0 - Control, Closure, and Concatenation
User improvements:
stimcirq
can now convert in both directions, and preserves circuit moment structure when convertingstim.TableauSimulator
is easier to control and inspect- Truncate the state using
stim.TableauSimulator.set_num_qubits
- Replace the state using
stim.TableauSimulator.set_inverse_tableau
- Recognize single qubit stabilizer states non-destructively using
stim.TableauSimulator.peek_bloch
- Get state stabilizers in a standard form using
stim.TableauSimulator.canonical_stabilizers
- Guide measurement results after the fact using
stim.TableauSimulator.measure_kickback
- Truncate the state using
stim.PauliString
is now closed under multiplicationstim.PauliString.sign
is now allowed to be1j
or-1j
- Added
allow_imaginary=False
parameter tostim.PauliString.random
- Multiplying anti-commuting Pauli strings now produces a result instead of an error
stim.PauliString
andstim.Tableau
now support concatenation via+
and/or*
- Adding
stim.PauliString
s concatenates them (computes their tensor product) - Adding
stim.Tableau
s concatenates them (computes their direct sum) - Multiplying
stim.PauliString
self-concatenates a variable number of times
- Adding
- Mutable semantics have been improved
stim.PauliString
now has a*=
operator that works inline- Added
copy
methods tostim.{Circuit,Tableau,PauliString,TableauSimulator}
- Bug fixes
- Fixed
stim.TableauSimulator.measure
reading invalid memory when applied to a qubit that hadn't been touched yet - Fixed
import stim
failing in some environments due to a unicode docstring not being marked as UTF8 (#20) - Fixed
stim.TableauSimulator.cnot
and other controlled operation methods failing when given a classical control - Worked around a bug in
std::random_device
in some environments (#26)
- Fixed
Dev improvements:
- Added a test command to
cibuildwheel
, so continuous integration now confirms tests pass on multiple platforms - Fixed stimcirq doctests being skipped