The Quantum Exact Simulation Toolkit v4.3.0
Loading...
Searching...
No Matches

Functions for pre- or post-multiplying general any-target diagonal matrices (as DiagMatr), or powers thereof, upon density matrices. More...

Functions

void leftapplyDiagMatr (Qureg qureg, int *targets, int numTargets, DiagMatr matrix)
 
void leftapplyDiagMatrPower (Qureg qureg, int *targets, int numTargets, DiagMatr matrix, qcomp exponent)
 
void rightapplyDiagMatr (Qureg qureg, int *targets, int numTargets, DiagMatr matrix)
 
void rightapplyDiagMatrPower (Qureg qureg, int *targets, int numTargets, DiagMatr matrix, qcomp exponent)
 

Detailed Description

Functions for pre- or post-multiplying general any-target diagonal matrices (as DiagMatr), or powers thereof, upon density matrices.

Function Documentation

◆ leftapplyDiagMatr()

void leftapplyDiagMatr ( Qureg qureg,
int * targets,
int numTargets,
DiagMatr matrix )
Note
Documentation for this function or struct is under construction!
See also
leftapplyCompMatr1()

Definition at line 215 of file multiplication.cpp.

215 {
216 validate_quregFields(qureg, __func__);
217 validate_targets(qureg, targets, numTargets, __func__);
218 validate_matrixDimMatchesTargets(matrix, numTargets, __func__); // also validates fields and is-sync
219
220 bool conj = false;
221 qcomp exponent = 1;
222 auto qubits = lists_getList64(targets, numTargets);
223 localiser_statevec_anyCtrlAnyTargDiagMatr(qureg, none, none, qubits, matrix, exponent, conj);
224}

Referenced by leftapplyDiagMatr().

◆ leftapplyDiagMatrPower()

void leftapplyDiagMatrPower ( Qureg qureg,
int * targets,
int numTargets,
DiagMatr matrix,
qcomp exponent )
Note
Documentation for this function or struct is under construction!
See also

Definition at line 258 of file multiplication.cpp.

258 {
259 validate_quregFields(qureg, __func__);
260 validate_targets(qureg, targets, numTargets, __func__);
261 validate_matrixDimMatchesTargets(matrix, numTargets, __func__); // also validates fields and is-sync, but not unitarity
262 validate_matrixExpIsNonDiverging(matrix, exponent, __func__); // harmlessly re-validates fields and is-sync
263
264 bool conj = false;
265 auto qubits = lists_getList64(targets, numTargets);
266 localiser_statevec_anyCtrlAnyTargDiagMatr(qureg, none, none, qubits, matrix, exponent, conj);
267}

Referenced by leftapplyDiagMatrPower().

◆ rightapplyDiagMatr()

void rightapplyDiagMatr ( Qureg qureg,
int * targets,
int numTargets,
DiagMatr matrix )
Note
Documentation for this function or struct is under construction!
See also
rightapplyCompMatr1()

Definition at line 226 of file multiplication.cpp.

226 {
227 validate_quregFields(qureg, __func__);
228 validate_quregIsDensityMatrix(qureg, __func__);
229 validate_targets(qureg, targets, numTargets, __func__);
230 validate_matrixDimMatchesTargets(matrix, numTargets, __func__); // also validates fields and is-sync
231
232 bool conj = false;
233 qcomp exponent = 1;
234 auto qubits = util_getBraQubits(lists_getList64(targets, numTargets), qureg);
235 localiser_statevec_anyCtrlAnyTargDiagMatr(qureg, none, none, qubits, matrix, exponent, conj);
236}

Referenced by rightapplyDiagMatr().

◆ rightapplyDiagMatrPower()

void rightapplyDiagMatrPower ( Qureg qureg,
int * targets,
int numTargets,
DiagMatr matrix,
qcomp exponent )
Note
Documentation for this function or struct is under construction!
See also

Definition at line 269 of file multiplication.cpp.

269 {
270 validate_quregFields(qureg, __func__);
271 validate_quregIsDensityMatrix(qureg, __func__);
272 validate_targets(qureg, targets, numTargets, __func__);
273 validate_matrixDimMatchesTargets(matrix, numTargets, __func__); // also validates fields and is-sync, but not unitarity
274 validate_matrixExpIsNonDiverging(matrix, exponent, __func__); // harmlessly re-validates fields and is-sync
275
276 bool conj = false;
277 auto qubits = util_getBraQubits(lists_getList64(targets, numTargets), qureg);
278 localiser_statevec_anyCtrlAnyTargDiagMatr(qureg, none, none, qubits, matrix, exponent, conj);
279}

Referenced by rightapplyDiagMatrPower().