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

Function demo_setKrausMap

examples/isolated/initialising_krausmaps.cpp:70–135  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

68
69
70void demo_setKrausMap() {
71
72 // inline literal (C++ only)
73 KrausMap a = createKrausMap(1, 3);
74 setKrausMap(a, {
75 {{1,2},{3,4}},
76 {{5,5},{6,6}},
77 {{1_i,2_i},{-3_i,-4_i}}
78 });
79 reportKrausMap(a);
80 destroyKrausMap(a);
81
82 // 3D vector (C++ only)
83 vector<vector<vector<qcomp>>> vec {
84 {
85 {-9,-8, -8, -9},
86 {7, 7, 6, 6},
87 {0, -1, -2, -3},
88 {-4_i, -5_i, 0, 0}
89 }, {
90 {1,2,3,4},
91 {5,6,7,8},
92 {1,1,1,1},
93 {2,2,2,2}
94 }
95 };
96 KrausMap b = createKrausMap(2, 2);
97 setKrausMap(b, vec);
98 reportKrausMap(b);
99 destroyKrausMap(b);
100
101 // 3D nested pointers
102 int nQb = 2;
103 int nOps = 4;
104 int dim = 1 << nQb;
105 qcomp*** ptrs = (qcomp***) malloc(nOps * sizeof *ptrs);
106 for (int n=0; n<nOps; n++) {
107 ptrs[n] = (qcomp**) malloc(dim * sizeof **ptrs);
108 for (int i=0; i<dim; i++) {
109 ptrs[n][i] = (qcomp*) malloc(dim * sizeof ***ptrs);
110 for (int j=0; j<dim; j++)
111 ptrs[n][i][j] = (n==j) * (n+1) * -10_i;
112 }
113 }
114 KrausMap c = createKrausMap(nQb, nOps);
115 setKrausMap(c, ptrs);
116 reportKrausMap(c);
117 destroyKrausMap(c);
118
119 // 1D array of 2D pointers (decays, so C++ supported)
120 qcomp** ptrArr[4];
121 for (int n=0; n<nOps; n++)
122 ptrArr[n] = ptrs[n];
123 KrausMap d = createKrausMap(nQb, nOps);
124 setKrausMap(d, ptrArr);
125 reportKrausMap(d);
126 destroyKrausMap(d);
127

Callers 1

mainFunction · 0.70

Calls 4

createKrausMapFunction · 0.85
setKrausMapFunction · 0.85
reportKrausMapFunction · 0.85
destroyKrausMapFunction · 0.85

Tested by

no test coverage detected