v1.5.0 - Noisy Measurements
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
measuresX0*X1
thenZ8*Z9
) - Fixed a bug in the frame simulator where
MY
(Y basis measurement) acted likeMRY
(Y basis demolition measurement)
Other Changes:
stimcirq
now addsQUBIT_COORDS
annotations- Arbitrary
cirq.GridQubit
/cirq.LineQubit
qubits can now survive round trip conversion from cirq to stim back to cirq
- Arbitrary
stim.Circuit
andstim.DetectorErrorModel
now support slicing (e.g.circuit[:4]
is a circuit with the first 4 operations fromcircuit
)- Giving
decompose_errors=True
tostim.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 acceptsstim.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 rawuint32_t
values