pub unsafe extern "C" fn mixNonTPTwoQubitKrausMap(
qureg: Qureg,
target1: c_int,
target2: c_int,
ops: *mut ComplexMatrix4,
numOps: c_int,
)Expand description
Apply a general non-trace-preserving two-qubit Kraus map to a density matrix, as specified by at most sixteen operators, \f$K_i\f$ (\p ops).
This effects \f[ \rho \to \sum\limits_i^{\text{numOps}} K_i \rho K_i^\dagger \f] where the matrices \f$K_i\f$ are unconstrained, and hence the effective map is permitted to be non-completely-positive and non-trace-preserving. Use mixTwoQubitKrausMap() to enforce that the map be completely positive.
\p targetQubit1 is treated as the \p least significant qubit in each op in \p ops.
Note that in distributed mode, this routine requires that each node contains at least 16 amplitudes. This means an q-qubit register can be distributed by at most 2^(q-4) numTargs nodes.
@see
- ::ComplexMatrix4
- mixTwoQubitKrausMap()
- mixNonTPKrausMap()
- mixNonTPMultiQubitKrausMap()
@ingroup decoherence @param[in,out] qureg the density matrix to which to apply the map @param[in] target1 the least significant target qubit in \p ops @param[in] target2 the most significant target qubit in \p ops @param[in] ops an array of at most 16 Kraus operators @param[in] numOps the number of operators in \p ops which must be >0 and <= 16. @throws invalidQuESTInputError()
- if \p qureg is not a density matrix
- if either \p target1 or \p target2 is outside of [0, \p qureg.numQubitsRepresented)
- if \p target1 = \p target2
- if \p numOps is outside [1, 16]
- if a node cannot fit 16 amplitudes in distributed mode @author Tyson Jones @author Balint Koczor (backend code)