Skip to content

v1.5.0 - Noisy Measurements

Compare
Choose a tag to compare
@Strilanc Strilanc released this 28 Jul 08:14
· 378 commits to main since this release

Flagship Changes:

  • Measurements can now be noisy (M(0.001) 1 2 3 flips each result with 0.1% chance)
  • Added Pauli product measurement (MPP X0*X1 Z8*Z9 measures X0*X1 then Z8*Z9)
  • Fixed a bug in the frame simulator where MY (Y basis measurement) acted like MRY (Y basis demolition measurement)

Other Changes:

  • stimcirq now adds QUBIT_COORDS annotations
    • Arbitrary cirq.GridQubit / cirq.LineQubit qubits can now survive round trip conversion from cirq to stim back to cirq
  • stim.Circuit and stim.DetectorErrorModel now support slicing (e.g. circuit[:4] is a circuit with the first 4 operations from circuit)
  • Giving decompose_errors=True to stim.Circuit.detector_error_model now guarantees the resulting error model is decomposed into graphlike errors (or else will raise an exception)
  • Increased the flexibility of error decomposition. It now considers all errors, instead of only other errors coming from the same Pauli channel, when the latter fails.
  • Fixed stim.Circuit.append_operation only accepting raw integers as targets (it now also accepts stim.GateTarget values).

C++ Library Changes:

  • Fixed some bugs related to statically linking C++ programs to stim
    • Fixed "stim.h" breaking if included twice
    • Documented how to link to stim using Bazel
    • Fixed Bazel BUILD file not including the include directory
  • Fixed an incompatibility with GTest v1.11
  • Added DetectorErrorModel::from_file convenience methods
  • Fixed FixedCapVector::operator< not being a consistent ordering.
  • Gate targets are now internally stored as GateTarget structs instead of raw uint32_t values