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

Functions for pre- or post-multiplying projectors upon density matrices. More...

Topics

 PauliStrSum
 Functions for pre- or post-multiplying weighted sums of Pauli tensors upon a density matrix.
 

Functions

void leftapplyMultiQubitProjector (Qureg qureg, int *qubits, int *outcomes, int numQubits)
 
void leftapplyQubitProjector (Qureg qureg, int qubit, int outcome)
 
void rightapplyMultiQubitProjector (Qureg qureg, int *qubits, int *outcomes, int numQubits)
 
void rightapplyQubitProjector (Qureg qureg, int qubit, int outcome)
 

Detailed Description

Functions for pre- or post-multiplying projectors upon density matrices.

Function Documentation

◆ leftapplyMultiQubitProjector()

void leftapplyMultiQubitProjector ( 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!
See also

Definition at line 584 of file multiplication.cpp.

584 {
585 validate_quregFields(qureg, __func__);
586 validate_targets(qureg, qubits, numQubits, __func__);
587 validate_measurementOutcomesAreValid(outcomes, numQubits, __func__);
588
589 qreal prob = 1;
590 auto qubitVec = util_getVector(qubits, numQubits);
591 auto outcomeVec = util_getVector(outcomes, numQubits);
592 localiser_statevec_multiQubitProjector(qureg, qubitVec, outcomeVec, prob);
593}

Referenced by TEST_CASE().

◆ leftapplyQubitProjector()

void leftapplyQubitProjector ( Qureg qureg,
int qubit,
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!
See also

Definition at line 575 of file multiplication.cpp.

575 {
576 validate_quregFields(qureg, __func__);
577 validate_target(qureg, qubit, __func__);
578 validate_measurementOutcomeIsValid(outcome, __func__);
579
580 qreal prob = 1;
581 localiser_statevec_multiQubitProjector(qureg, {qubit}, {outcome}, prob);
582}

Referenced by TEST_CASE().

◆ rightapplyMultiQubitProjector()

void rightapplyMultiQubitProjector ( 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!
See also

Definition at line 605 of file multiplication.cpp.

605 {
606 validate_quregFields(qureg, __func__);
607 validate_quregIsDensityMatrix(qureg, __func__);
608 validate_targets(qureg, qubits, numQubits, __func__);
609 validate_measurementOutcomesAreValid(outcomes, numQubits, __func__);
610
611 qreal prob = 1;
612 auto qubitVec = util_getBraQubits(util_getVector(qubits, numQubits), qureg);
613 auto outcomeVec = util_getVector(outcomes, numQubits);
614 localiser_statevec_multiQubitProjector(qureg, qubitVec, outcomeVec, prob);
615}

Referenced by TEST_CASE().

◆ rightapplyQubitProjector()

void rightapplyQubitProjector ( Qureg qureg,
int qubit,
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!
See also

Definition at line 595 of file multiplication.cpp.

595 {
596 validate_quregFields(qureg, __func__);
597 validate_quregIsDensityMatrix(qureg, __func__);
598 validate_target(qureg, qubit, __func__);
599 validate_measurementOutcomeIsValid(outcome, __func__);
600
601 qreal prob = 1;
602 localiser_statevec_multiQubitProjector(qureg, {util_getBraQubit(qubit,qureg)}, {outcome}, prob);
603}

Referenced by TEST_CASE().