| 2003 | |
| 2004 | |
| 2005 | qcomp getDensMatrExpecPauliStrTermOfOnlyThisNode(Qureg qureg, PauliStr str) { |
| 2006 | assert_localiserGivenDensMatr(qureg); |
| 2007 | |
| 2008 | // caller must reduce the returned value between nodes if necessary |
| 2009 | |
| 2010 | // all ket-paulis are in the suffix state |
| 2011 | auto [targsX, targsY, targsZ] = paulis_getSeparateInds(str); |
| 2012 | |
| 2013 | // optimised scenario when str = I |
| 2014 | if (targsX.empty() && targsY.empty() && targsZ.empty()) |
| 2015 | return accel_densmatr_calcTotalProb_sub(qureg); |
| 2016 | |
| 2017 | // optimised scenario when str = Z |
| 2018 | if (targsX.empty() && targsY.empty()) |
| 2019 | return accel_densmatr_calcExpecAnyTargZ_sub(qureg, targsZ); |
| 2020 | |
| 2021 | // generic XYZ |
| 2022 | return accel_densmatr_calcExpecPauliStr_sub(qureg, targsX, targsY, targsZ); |
| 2023 | } |
| 2024 | |
| 2025 | |
| 2026 | qcomp localiser_statevec_calcExpecPauliStr(Qureg qureg, PauliStr str) { |
no test coverage detected