| 1351 | } |
| 1352 | |
| 1353 | void applyMultiStateControlledPhaseGadget(Qureg qureg, int* controls, int* states, int numControls, int* targets, int numTargets, qreal angle) { |
| 1354 | validate_quregFields(qureg, __func__); |
| 1355 | validate_controlsAndTargets(qureg, controls, numControls, targets, numTargets, __func__); |
| 1356 | validate_controlStates(states, numControls, __func__); |
| 1357 | |
| 1358 | qreal phase = util_getPhaseFromGateAngle(angle); |
| 1359 | auto ctrlVec = util_getVector(controls, numControls); |
| 1360 | auto targVec = util_getVector(targets, numTargets); |
| 1361 | auto stateVec = util_getVector(states, numControls); // empty if states==nullptr |
| 1362 | localiser_statevec_anyCtrlPhaseGadget(qureg, ctrlVec, stateVec, targVec, phase); |
| 1363 | |
| 1364 | if (!qureg.isDensityMatrix) |
| 1365 | return; |
| 1366 | |
| 1367 | phase *= -1; |
| 1368 | ctrlVec = util_getBraQubits(ctrlVec, qureg); |
| 1369 | targVec = util_getBraQubits(targVec, qureg); |
| 1370 | localiser_statevec_anyCtrlPhaseGadget(qureg, ctrlVec, stateVec, targVec, phase); |
| 1371 | } |
| 1372 | |
| 1373 | } // end de-mangler |
| 1374 |
no test coverage detected