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

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

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!
See also

Definition at line 593 of file multiplication.cpp.

593 {
594 validate_quregFields(qureg, __func__);
595 validate_targets(qureg, qubits, numQubits, __func__);
596 validate_measurementOutcomesAreValid(outcomes, numQubits, __func__);
597
598 qreal prob = 1;
599 auto qubitVec = lists_getList64(qubits, numQubits);
600 auto outcomeVec = lists_getList64(outcomes, numQubits);
601 localiser_statevec_multiQubitProjector(qureg, qubitVec, outcomeVec, prob);
602}

Referenced by leftapplyMultiQubitProjector().

◆ leftapplyQubitProjector()

void leftapplyQubitProjector ( Qureg qureg,
int qubit,
int outcome )
Note
Documentation for this function or struct is under construction!
See also

Definition at line 584 of file multiplication.cpp.

584 {
585 validate_quregFields(qureg, __func__);
586 validate_target(qureg, qubit, __func__);
587 validate_measurementOutcomeIsValid(outcome, __func__);
588
589 qreal prob = 1;
590 localiser_statevec_multiQubitProjector(qureg, lists_getList64({qubit}), lists_getList64({outcome}), prob);
591}

◆ 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 615 of file multiplication.cpp.

615 {
616 validate_quregFields(qureg, __func__);
617 validate_quregIsDensityMatrix(qureg, __func__);
618 validate_targets(qureg, qubits, numQubits, __func__);
619 validate_measurementOutcomesAreValid(outcomes, numQubits, __func__);
620
621 qreal prob = 1;
622 auto qubitVec = util_getBraQubits(lists_getList64(qubits, numQubits), qureg);
623 auto outcomeVec = lists_getList64(outcomes, numQubits);
624 localiser_statevec_multiQubitProjector(qureg, qubitVec, outcomeVec, prob);
625}

Referenced by rightapplyMultiQubitProjector().

◆ rightapplyQubitProjector()

void rightapplyQubitProjector ( Qureg qureg,
int qubit,
int outcome )
Note
Documentation for this function or struct is under construction!
See also

Definition at line 604 of file multiplication.cpp.

604 {
605 validate_quregFields(qureg, __func__);
606 validate_quregIsDensityMatrix(qureg, __func__);
607 validate_target(qureg, qubit, __func__);
608 validate_measurementOutcomeIsValid(outcome, __func__);
609
610 qreal prob = 1;
611 auto qubitList = lists_getList64({util_getBraQubit(qubit,qureg)});
612 localiser_statevec_multiQubitProjector(qureg, qubitList, lists_getList64({outcome}), prob);
613}