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

Function applyMultiStateControlledPhaseGadget

quest/src/api/operations.cpp:1353–1371  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1351}
1352
1353void 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

Callers 4

applyPhaseGadgetFunction · 0.85

Calls 8

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

Tested by

no test coverage detected