The Quantum Exact Simulation Toolkit v4.2.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 applyQubitProjector (Qureg qureg, int target, int outcome)
 

Detailed Description

Functions for effecting projectors which break the state normalisation.

Function Documentation

◆ applyMultiQubitProjector()

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 1570 of file operations.cpp.

1570 {
1571 validate_quregFields(qureg, __func__);
1572 validate_targets(qureg, qubits, numQubits, __func__);
1573 validate_measurementOutcomesAreValid(outcomes, numQubits, __func__);
1574
1575 qreal prob = 1;
1576 auto qubitVec = util_getVector(qubits, numQubits);
1577 auto outcomeVec = util_getVector(outcomes, numQubits);
1578
1579 // density matrix has an optimised func in lieu of calling the statevector func twice
1580 (qureg.isDensityMatrix)?
1581 localiser_densmatr_multiQubitProjector(qureg, qubitVec, outcomeVec, prob):
1582 localiser_statevec_multiQubitProjector(qureg, qubitVec, outcomeVec, prob);
1583}

Referenced by applyMultiQubitProjector(), and TEST_CASE().

◆ 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 1557 of file operations.cpp.

1557 {
1558 validate_quregFields(qureg, __func__);
1559 validate_target(qureg, target, __func__);
1560 validate_measurementOutcomeIsValid(outcome, __func__);
1561
1562 qreal prob = 1;
1563
1564 // density matrix has an optimised func in lieu of calling the statevector func twice
1565 (qureg.isDensityMatrix)?
1566 localiser_densmatr_multiQubitProjector(qureg, {target}, {outcome}, prob):
1567 localiser_statevec_multiQubitProjector(qureg, {target}, {outcome}, prob);
1568}

Referenced by TEST_CASE().