MCPcopy Create free account
hub / github.com/QuEST-Kit/QuEST / applyMultiStateControlledSwap

Function applyMultiStateControlledSwap

quest/src/api/operations.cpp:676–692  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

674}
675
676void applyMultiStateControlledSwap(Qureg qureg, int* controls, int* states, int numControls, int qubit1, int qubit2) {
677 validate_quregFields(qureg, __func__);
678 validate_controlsAndTwoTargets(qureg, controls, numControls, qubit1, qubit2, __func__);
679 validate_controlStates(states, numControls, __func__); // permits states==nullptr
680
681 auto ctrlVec = util_getVector(controls, numControls);
682 auto stateVec = util_getVector(states, numControls); // empty if states==nullptr
683 localiser_statevec_anyCtrlSwap(qureg, ctrlVec, stateVec, qubit1, qubit2);
684
685 if (!qureg.isDensityMatrix)
686 return;
687
688 ctrlVec = util_getBraQubits(ctrlVec, qureg);
689 qubit1 = util_getBraQubit(qubit1, qureg);
690 qubit2 = util_getBraQubit(qubit2, qureg);
691 localiser_statevec_anyCtrlSwap(qureg, ctrlVec, stateVec, qubit1, qubit2);
692}
693
694} // end de-mangler
695

Callers 4

applySwapFunction · 0.85
applyControlledSwapFunction · 0.85
applyMultiControlledSwapFunction · 0.85

Calls 8

validate_quregFieldsFunction · 0.85
validate_controlStatesFunction · 0.85
util_getVectorFunction · 0.85
util_getBraQubitsFunction · 0.85
util_getBraQubitFunction · 0.85

Tested by

no test coverage detected