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

Functions for applying the individual one-qubit Pauli operators. More...

Functions

void applyControlledPauliX (Qureg qureg, int control, int target)
 
void applyControlledPauliY (Qureg qureg, int control, int target)
 
void applyControlledPauliZ (Qureg qureg, int control, int target)
 
void applyMultiControlledPauliX (Qureg qureg, int *controls, int numControls, int target)
 
void applyMultiControlledPauliY (Qureg qureg, int *controls, int numControls, int target)
 
void applyMultiControlledPauliZ (Qureg qureg, int *controls, int numControls, int target)
 
void applyMultiStateControlledPauliX (Qureg qureg, int *controls, int *states, int numControls, int target)
 
void applyMultiStateControlledPauliY (Qureg qureg, int *controls, int *states, int numControls, int target)
 
void applyMultiStateControlledPauliZ (Qureg qureg, int *controls, int *states, int numControls, int target)
 
void applyPauliX (Qureg qureg, int target)
 
void applyPauliY (Qureg qureg, int target)
 
void applyPauliZ (Qureg qureg, int target)
 

Detailed Description

Functions for applying the individual one-qubit Pauli operators.

Function Documentation

◆ applyControlledPauliX()

void applyControlledPauliX ( Qureg qureg,
int control,
int target )
Note
Documentation for this function or struct is under construction!

Definition at line 809 of file operations.cpp.

809 {
810 validate_quregFields(qureg, __func__);
811 validate_controlAndTarget(qureg, control, target, __func__);
812
813 // harmlessly re-validates
814 applyMultiStateControlledPauliX(qureg, &control, nullptr, 1, target);
815}
void applyMultiStateControlledPauliX(Qureg qureg, int *controls, int *states, int numControls, int target)

◆ applyControlledPauliY()

void applyControlledPauliY ( Qureg qureg,
int control,
int target )
Note
Documentation for this function or struct is under construction!

Definition at line 817 of file operations.cpp.

817 {
818 validate_quregFields(qureg, __func__);
819 validate_controlAndTarget(qureg, control, target, __func__);
820
821 // harmlessly re-validates
822 applyMultiStateControlledPauliY(qureg, &control, nullptr, 1, target);
823}
void applyMultiStateControlledPauliY(Qureg qureg, int *controls, int *states, int numControls, int target)

◆ applyControlledPauliZ()

void applyControlledPauliZ ( Qureg qureg,
int control,
int target )
Note
Documentation for this function or struct is under construction!

Definition at line 825 of file operations.cpp.

825 {
826 validate_quregFields(qureg, __func__);
827 validate_controlAndTarget(qureg, control, target, __func__);
828
829 // harmlessly re-validates
830 applyMultiStateControlledPauliZ(qureg, &control, nullptr, 1, target);
831}
void applyMultiStateControlledPauliZ(Qureg qureg, int *controls, int *states, int numControls, int target)

◆ applyMultiControlledPauliX()

void applyMultiControlledPauliX ( Qureg qureg,
int * controls,
int numControls,
int target )
Note
Documentation for this function or struct is under construction!

Definition at line 833 of file operations.cpp.

833 {
834 validate_quregFields(qureg, __func__);
835 validate_controlsAndTarget(qureg, controls, numControls, target, __func__);
836
837 // harmlessly re-validates
838 applyMultiStateControlledPauliX(qureg, controls, nullptr, numControls, target);
839}

Referenced by applyMultiControlledPauliX().

◆ applyMultiControlledPauliY()

void applyMultiControlledPauliY ( Qureg qureg,
int * controls,
int numControls,
int target )
Note
Documentation for this function or struct is under construction!

Definition at line 841 of file operations.cpp.

841 {
842 validate_quregFields(qureg, __func__);
843 validate_controlsAndTarget(qureg, controls, numControls, target, __func__);
844
845 // harmlessly re-validates
846 applyMultiStateControlledPauliY(qureg, controls, nullptr, numControls, target);
847}

Referenced by applyMultiControlledPauliY().

◆ applyMultiControlledPauliZ()

void applyMultiControlledPauliZ ( Qureg qureg,
int * controls,
int numControls,
int target )
Note
Documentation for this function or struct is under construction!

Definition at line 849 of file operations.cpp.

849 {
850 validate_quregFields(qureg, __func__);
851 validate_controlsAndTarget(qureg, controls, numControls, target, __func__);
852
853 // harmlessly re-validates
854 applyMultiStateControlledPauliZ(qureg, controls, nullptr, numControls, target);
855}

Referenced by applyMultiControlledPauliZ().

◆ applyMultiStateControlledPauliX()

void applyMultiStateControlledPauliX ( Qureg qureg,
int * controls,
int * states,
int numControls,
int target )
Note
Documentation for this function or struct is under construction!
See also
applyMultiStateControlledCompMatr1()

Definition at line 857 of file operations.cpp.

857 {
858 validate_quregFields(qureg, __func__);
859 validate_controlsAndTarget(qureg, controls, numControls, target, __func__);
860 validate_controlStates(states, numControls, __func__); // permits states==nullptr
861
862 // note that for the single-target scenario, we do not call the backend of
863 // applyMultiStateControlledPauliStr() since it contains sub-optimal logic
864 // which sees the factor of every amplitude dynamically evaluated (based on
865 // index parity, etc); the dense-matrix element lookup is faster
866
867 /// @todo
868 /// a bespoke all-pauli-X function (like in QuEST v3) will be faster still
869 /// since it avoids all superfluous flops; check worthwhile for multi-qubit
870
871 // harmlessly re-validates, including hardcoded matrix unitarity
872 CompMatr1 matrix = util_getPauliX();
873 validateAndApplyAnyCtrlAnyTargUnitaryMatrix(qureg, controls, states, numControls, &target, 1, matrix, __func__);
874}

Referenced by applyControlledPauliX(), applyMultiControlledPauliX(), applyMultiStateControlledPauliX(), and applyPauliX().

◆ applyMultiStateControlledPauliY()

void applyMultiStateControlledPauliY ( Qureg qureg,
int * controls,
int * states,
int numControls,
int target )
Note
Documentation for this function or struct is under construction!
See also
applyMultiStateControlledCompMatr1()

Definition at line 876 of file operations.cpp.

876 {
877 validate_quregFields(qureg, __func__);
878 validate_controlsAndTarget(qureg, controls, numControls, target, __func__);
879 validate_controlStates(states, numControls, __func__); // permits states==nullptr
880
881 // harmlessly re-validates, including hardcoded matrix unitarity
882 CompMatr1 matrix = util_getPauliY();
883 validateAndApplyAnyCtrlAnyTargUnitaryMatrix(qureg, controls, states, numControls, &target, 1, matrix, __func__);
884}

Referenced by applyControlledPauliY(), applyMultiControlledPauliY(), applyMultiStateControlledPauliY(), and applyPauliY().

◆ applyMultiStateControlledPauliZ()

void applyMultiStateControlledPauliZ ( Qureg qureg,
int * controls,
int * states,
int numControls,
int target )
Note
Documentation for this function or struct is under construction!
See also
applyMultiStateControlledCompMatr1()

Definition at line 886 of file operations.cpp.

886 {
887 validate_quregFields(qureg, __func__);
888 validate_controlsAndTarget(qureg, controls, numControls, target, __func__);
889 validate_controlStates(states, numControls, __func__); // permits states==nullptr
890
891 // harmlessly re-validates, including hardcoded matrix unitarity
892 DiagMatr1 matrix = util_getPauliZ();
893 validateAndApplyAnyCtrlAnyTargUnitaryMatrix(qureg, controls, states, numControls, &target, 1, matrix, __func__);
894}

Referenced by applyControlledPauliZ(), applyMultiControlledPauliZ(), applyMultiStateControlledPauliZ(), and applyPauliZ().

◆ applyPauliX()

void applyPauliX ( Qureg qureg,
int target )
Note
Documentation for this function or struct is under construction!

Definition at line 785 of file operations.cpp.

785 {
786 validate_quregFields(qureg, __func__);
787 validate_target(qureg, target, __func__);
788
789 // harmlessly re-validates
790 applyMultiStateControlledPauliX(qureg, nullptr, nullptr, 0, target);
791}

◆ applyPauliY()

void applyPauliY ( Qureg qureg,
int target )
Note
Documentation for this function or struct is under construction!

Definition at line 793 of file operations.cpp.

793 {
794 validate_quregFields(qureg, __func__);
795 validate_target(qureg, target, __func__);
796
797 // harmlessly re-validates
798 applyMultiStateControlledPauliY(qureg, nullptr, nullptr, 0, target);
799}

◆ applyPauliZ()

void applyPauliZ ( Qureg qureg,
int target )
Note
Documentation for this function or struct is under construction!

Definition at line 801 of file operations.cpp.

801 {
802 validate_quregFields(qureg, __func__);
803 validate_target(qureg, target, __func__);
804
805 // harmlessly re-validates
806 applyMultiStateControlledPauliZ(qureg, nullptr, nullptr, 0, target);
807}