The Quantum Exact Simulation Toolkit v4.0.0
Loading...
Searching...
No Matches
decoherence.h
1/** @file
2 * API signatures for effecting decohering channels upon Quregs
3 * which are instantiated as density matrices.
4 *
5 * @author Tyson Jones
6 *
7 * @defgroup decoherence Decoherence
8 * @ingroup api
9 * @brief Functions for effecting decoherence channels upon density matrices.
10 * @{
11 */
12
13#ifndef DECOHERENCE_H
14#define DECOHERENCE_H
15
16#include "quest/include/types.h"
17#include "quest/include/qureg.h"
18#include "quest/include/channels.h"
19
20
21
22/*
23 * C AND C++ AGNOSTIC FUNCTIONS
24 */
25
26// enable invocation by both C and C++ binaries
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31/// @notdoced
32/// @notvalidated
33void mixDephasing(Qureg qureg, int qubit, qreal prob);
34
35/// @notdoced
36/// @notvalidated
37void mixTwoQubitDephasing(Qureg qureg, int qubit1, int qubit2, qreal prob);
38
39/// @notdoced
40/// @notvalidated
41void mixDepolarising(Qureg qureg, int qubit, qreal prob);
42
43/// @notdoced
44/// @notvalidated
45void mixTwoQubitDepolarising(Qureg qureg, int qubit1, int qubit2, qreal prob);
46
47/// @notdoced
48/// @notvalidated
49void mixDamping(Qureg qureg, int qubit, qreal prob);
50
51/// @notdoced
52/// @notvalidated
53void mixPaulis(Qureg qureg, int qubit, qreal probX, qreal probY, qreal probZ);
54
55/// @notdoced
56/// @notvalidated
57void mixQureg(Qureg qureg, Qureg other, qreal prob);
58
59/// @notdoced
60/// @notvalidated
61void mixKrausMap(Qureg qureg, int* targets, int numTargets, KrausMap map);
62
63/// @notdoced
64/// @notvalidated
65void mixSuperOp(Qureg qureg, int* targets, int numTargets, SuperOp superop);
66
67
68// end de-mangler
69#ifdef __cplusplus
70}
71#endif
72
73
74
75/*
76 * C++ OVERLOADS
77 *
78 * which are only accessible to C++ binaries, and accept
79 * arguments more natural to C++ (e.g. std::vector). These
80 * are included in the file-wide doxygen group (no subgroups).
81 */
82
83#ifdef __cplusplus
84
85#include <vector>
86
87/// @nottested
88/// @notdoced
89/// @notvalidated
90/// @cpponly
91void mixKrausMap(Qureg qureg, std::vector<int> targets, KrausMap map);
92
93/// @nottested
94/// @notdoced
95/// @notvalidated
96/// @cpponly
97void mixSuperOp(Qureg qureg, std::vector<int> targets, SuperOp superop);
98
99#endif // __cplusplus
100
101
102
103#endif // DECOHERENCE_H
104
105/** @} */ // (end file-wide doxygen defgroup)
void mixDepolarising(Qureg qureg, int qubit, qreal prob)
void mixTwoQubitDephasing(Qureg qureg, int qubit1, int qubit2, qreal prob)
void mixQureg(Qureg qureg, Qureg other, qreal prob)
void mixDamping(Qureg qureg, int qubit, qreal prob)
void mixPaulis(Qureg qureg, int qubit, qreal probX, qreal probY, qreal probZ)
void mixKrausMap(Qureg qureg, int *targets, int numTargets, KrausMap map)
void mixSuperOp(Qureg qureg, int *targets, int numTargets, SuperOp superop)
void mixTwoQubitDepolarising(Qureg qureg, int qubit1, int qubit2, qreal prob)
void mixDephasing(Qureg qureg, int qubit, qreal prob)
Definition qureg.h:49