The Quantum Exact Simulation Toolkit v4.0.0
Loading...
Searching...
No Matches

Functions for effecting projectors which break the state normalisation. More...

Functions

void applyMultiQubitProjector (Qureg qureg, int *qubits, int *outcomes, int numQubits)
 
void applyMultiQubitProjector (Qureg qureg, std::vector< int > qubits, std::vector< int > outcomes)
 
void applyQubitProjector (Qureg qureg, int target, int outcome)
 

Detailed Description

Functions for effecting projectors which break the state normalisation.

Function Documentation

◆ applyMultiQubitProjector() [1/2]

void applyMultiQubitProjector ( Qureg qureg,
int * qubits,
int * outcomes,
int numQubits )
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 1750 of file operations.cpp.

1750 {
1751 validate_quregFields(qureg, __func__);
1752 validate_targets(qureg, qubits, numQubits, __func__);
1753 validate_measurementOutcomesAreValid(outcomes, numQubits, __func__);
1754
1755 qreal prob = 1;
1756 auto qubitVec = util_getVector(qubits, numQubits);
1757 auto outcomeVec = util_getVector(outcomes, numQubits);
1758
1759 (qureg.isDensityMatrix)?
1760 localiser_densmatr_multiQubitProjector(qureg, qubitVec, outcomeVec, prob):
1761 localiser_statevec_multiQubitProjector(qureg, qubitVec, outcomeVec, prob);
1762}

Referenced by applyMultiQubitProjector(), and TEST_CASE().

◆ applyMultiQubitProjector() [2/2]

void applyMultiQubitProjector ( Qureg qureg,
std::vector< int > qubits,
std::vector< int > outcomes )
Warning
This function has not yet been unit tested and may contain bugs. Please use with caution!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!
Note
Documentation for this function or struct is under construction!
Remarks
This function is only available in C++.

Definition at line 1766 of file operations.cpp.

1766 {
1767 validate_measurementOutcomesMatchTargets(qubits.size(), outcomes.size(), __func__);
1768
1769 applyMultiQubitProjector(qureg, qubits.data(), outcomes.data(), outcomes.size());
1770}
void applyMultiQubitProjector(Qureg qureg, int *qubits, int *outcomes, int numQubits)

◆ applyQubitProjector()

void applyQubitProjector ( Qureg qureg,
int target,
int outcome )
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 1738 of file operations.cpp.

1738 {
1739 validate_quregFields(qureg, __func__);
1740 validate_target(qureg, target, __func__);
1741 validate_measurementOutcomeIsValid(outcome, __func__);
1742
1743 // we permit the outcome to be negligibly likely, leaving state = null
1744 qreal prob = 1;
1745 (qureg.isDensityMatrix)?
1746 localiser_densmatr_multiQubitProjector(qureg, {target}, {outcome}, prob):
1747 localiser_statevec_multiQubitProjector(qureg, {target}, {outcome}, prob);
1748}

Referenced by TEST_CASE().