| 674 | } |
| 675 | |
| 676 | void 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 |
no test coverage detected