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

Function applyNonUnitaryPauliGadget

quest/src/api/operations.cpp:1248–1262  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1246}
1247
1248void applyNonUnitaryPauliGadget(Qureg qureg, PauliStr str, qcomp angle) {
1249 validate_quregFields(qureg, __func__);
1250 validate_pauliStrTargets(qureg, str, __func__);
1251
1252 qcomp phase = util_getPhaseFromGateAngle(angle);
1253 localiser_statevec_anyCtrlPauliGadget(qureg, {}, {}, str, phase);
1254
1255 if (!qureg.isDensityMatrix)
1256 return;
1257
1258 // conj(e^i(a)P) = e^(-i s conj(a) P)
1259 phase = - std::conj(phase) * paulis_getSignOfPauliStrConj(str);
1260 str = paulis_getShiftedPauliStr(str, qureg.numQubits);
1261 localiser_statevec_anyCtrlPauliGadget(qureg, {}, {}, str, phase);
1262}
1263
1264void applyControlledPauliGadget(Qureg qureg, int control, PauliStr str, qreal angle) {
1265 validate_quregFields(qureg, __func__);

Callers 2

SECTIONFunction · 0.85
mainFunction · 0.85

Tested by

no test coverage detected