MCPcopy Create free account
hub / github.com/QuEST-Kit/QuEST / applyForcedMultiQubitMeasurement

Function applyForcedMultiQubitMeasurement

quest/src/api/operations.cpp:1698–1716  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1696}
1697
1698qreal applyForcedMultiQubitMeasurement(Qureg qureg, int* qubits, int* outcomes, int numQubits) {
1699 validate_quregFields(qureg, __func__);
1700 validate_targets(qureg, qubits, numQubits, __func__);
1701 validate_measurementOutcomesAreValid(outcomes, numQubits, __func__);
1702
1703 auto qubitVec = util_getVector(qubits, numQubits);
1704 auto outcomeVec = util_getVector(outcomes, numQubits);
1705
1706 // ensure probability of the forced measurement outcome is not negligible
1707 qreal prob = calcProbOfMultiQubitOutcome(qureg, qubits, outcomes, numQubits); // harmlessly re-validates
1708 validate_measurementOutcomesProbNotZero(outcomes, numQubits, prob, __func__);
1709
1710 // project to the outcome, renormalising the surviving states
1711 (qureg.isDensityMatrix)?
1712 localiser_densmatr_multiQubitProjector(qureg, qubitVec, outcomeVec, prob):
1713 localiser_statevec_multiQubitProjector(qureg, qubitVec, outcomeVec, prob);
1714
1715 return prob;
1716}
1717
1718} // end de-mangler
1719

Callers 1

SECTIONFunction · 0.85

Tested by

no test coverage detected