This changelog track changes to the qoqo project starting at version 0.5.0
- Increased tolerance for unitary violation when construction unitary matrix for SingleQubitGate from
f64::EPSILON
to1e-6
. - Semver-style version checking for Circuit serialization. In beta mode (0.y.z) minor version must match (y_library == y_data) in release mode (x.y.z) major version must match (x_library == x_data) and minor version of library must exceed minor version of data (y_library >= y_data).
- Bug in the probability function of the PragmaDamping gate
- MultiQubitZZ gate. Rotation under a multi-qubit product of Pauli Z operators.
two_qubit_edges
function in Device trait. Used to create a simple graph-library-agnostic representation of the connectivity graph of a device.
- Updated to pyo3 0.15.0
- QuantumProgram: A representation of a quantum program that accepts a list of free classical float parameters, runs measurements on a backend and returns expectation values or the classical register output of the quantum circuits. QuantumProgram is intended as the main interface between classical software and roqoqo quantum programs.
-
In the Device Trait the
change_device
function changed the signature fromfn change_device(&mut self, operation: &[u8]) -> Result<(), RoqoqoBackendError>;
to
fn change_device(&mut self, hqslang: &str, operation: &[u8]) -> Result<(), RoqoqoBackendError>
including the
hqslang
name of the operation that changes the device.
- Bug in
wrapped_hqslang
and missingwrapped_operation
functions in qoqo PragmaChangeDeviceWrapper
- PramgaChangeDevice: A pragma operation acting as a wrapper around device specific Pragmas that can change the device topology.
- change_device interface to Device trait allowing for the modification of Devices by Pragmas
- Update to rust 2021 edition
- Fix constructing enum MultiQubitGateOperation for all operations implementing OperateMultiQubitGate
- Fixed calculation of superoperator for damping
- Fixed function signatures in Device trait to uniformly return values instead of references and take references for qubits
- Unittest for the superoperator method of the PragmaGeneralNoise
- NegativeEigenvalue RoqoqoError for matrices that are not positive semi-definite
- Device trait: A minimal trait for quantum computing devices used with roqoqo
RoqoqoBackendError
now has a variantGenericError
for additional backend error types
- Rarely used qubit mapping is now the last argument in PragmaRepeatedMeasurement
- PragmaGeneralNoise uses sigma^+ sigma^- and sigma^z as a basis to for Lindblad decoherence rates to avoid using complex rates. Rate and operators parameters of PragmaGeneralNoise have been combined in single parameter rates.
- alpha_i function for Tgate
- Bugfix measurement selection in stochastic_gate_test
- Fixed versioning scheme to use the same version number across the project.
- Updated pyo3 dependency to 0.14.1, numpy to 0.14, num-complex to 0.4 and ndarray to 0.15
- Removed sprs dependency to allow update of other dependencies
- Wrong Python Class name of ClassicalRegister measurement (was "Cheated")
- PhaseShiftedControlledZ gate in roqoqo
- QoqoBackendError to use in the python interface of rust based backends