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

Functions for calculating reduced density matrices, creating a new output Qureg. More...

Functions

Qureg calcPartialTrace (Qureg qureg, int *traceOutQubits, int numTraceQubits)
 
Qureg calcPartialTrace (Qureg qureg, std::vector< int > traceOutQubits)
 
Qureg calcReducedDensityMatrix (Qureg qureg, int *retainQubits, int numRetainQubits)
 
Qureg calcReducedDensityMatrix (Qureg qureg, std::vector< int > retainQubits)
 

Detailed Description

Functions for calculating reduced density matrices, creating a new output Qureg.

Function Documentation

◆ calcPartialTrace() [1/2]

Qureg calcPartialTrace ( Qureg qureg,
int * traceOutQubits,
int numTraceQubits )
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 373 of file calculations.cpp.

373 {
374 validate_quregFields(qureg, __func__);
375 validate_quregIsDensityMatrix(qureg, __func__);
376 validate_targets(qureg, traceOutQubits, numTraceQubits, __func__);
377 validate_quregCanBeReduced(qureg, numTraceQubits, __func__);
378
379 // attempt to create reduced Qureg with same deployments as input Qureg
380 Qureg out = validateAndCreateCustomQureg(
381 qureg.numQubits - numTraceQubits,
382 qureg.isDensityMatrix, qureg.isDistributed,
383 qureg.isGpuAccelerated, qureg.isMultithreaded, __func__);
384
385 // set it to reduced density matrix
386 auto targets = util_getVector(traceOutQubits, numTraceQubits);
387 localiser_densmatr_partialTrace(qureg, out, targets);
388
389 return out;
390}
Definition qureg.h:49

Referenced by calcPartialTrace(), calcReducedDensityMatrix(), and TEST_CASE().

◆ calcPartialTrace() [2/2]

Qureg calcPartialTrace ( Qureg qureg,
std::vector< int > traceOutQubits )
Warning
This function has not yet been unit tested and may contain bugs. Please use with caution!
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!
Remarks
This function is only available in C++.

Definition at line 440 of file calculations.cpp.

440 {
441 return calcPartialTrace(qureg, traceOutQubits.data(), traceOutQubits.size());
442}
Qureg calcPartialTrace(Qureg qureg, int *traceOutQubits, int numTraceQubits)

◆ calcReducedDensityMatrix() [1/2]

Qureg calcReducedDensityMatrix ( Qureg qureg,
int * retainQubits,
int numRetainQubits )
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!

Definition at line 393 of file calculations.cpp.

393 {
394 validate_quregFields(qureg, __func__);
395 validate_quregIsDensityMatrix(qureg, __func__);
396 validate_targets(qureg, retainQubits, numRetainQubits, __func__);
397 validate_quregCanBeReduced(qureg, qureg.numQubits - numRetainQubits, __func__);
398
399 auto traceQubits = util_getNonTargetedQubits(retainQubits, numRetainQubits, qureg.numQubits);
400
401 // harmlessly re-validates
402 return calcPartialTrace(qureg, traceQubits.data(), traceQubits.size());
403}

Referenced by calcReducedDensityMatrix(), and TEST_CASE().

◆ calcReducedDensityMatrix() [2/2]

Qureg calcReducedDensityMatrix ( Qureg qureg,
std::vector< int > retainQubits )
Warning
This function has not yet been unit tested and may contain bugs. Please use with caution!
Note
Documentation for this function or struct is under construction!
Attention
This function's input validation has not yet been unit tested, so erroneous usage may produce unexpected output. Please use with caution!
Remarks
This function is only available in C++.

Definition at line 445 of file calculations.cpp.

445 {
446 return calcReducedDensityMatrix(qureg, retainQubits.data(), retainQubits.size());
447}
Qureg calcReducedDensityMatrix(Qureg qureg, int *retainQubits, int numRetainQubits)