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

Function createKrausMap

quest/src/api/channels.cpp:176–200  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

174
175
176extern "C" KrausMap createKrausMap(int numQubits, int numOperators) {
177 validate_envIsInit(__func__);
178 validate_newKrausMapParams(numQubits, numOperators, __func__);
179
180 // validation ensures this never overflows
181 qindex numRows = powerOf2(numQubits);
182
183 // attempt to allocate output KrausMap fields (avoiding C++20 designated initialiser)
184 KrausMap out;
185 out.numQubits = numQubits,
186 out.numMatrices = numOperators,
187 out.numRows = numRows,
188 out.matrices = cpu_allocMatrixList(numRows, numOperators); // is or contains nullptr if failed
189 out.superop = allocSuperOp(numQubits); // heap fields are or contain nullptr if failed
190 out.isApproxCPTP = util_allocEpsilonSensitiveHeapFlag(); // nullptr if failed
191
192 // free memory before throwing validation error to avoid memory leaks
193 freeAllMemoryIfAnyAllocsFailed(out); // sets out.matrices=nullptr if failed
194 validate_newKrausMapAllocs(out, __func__);
195
196 // mark CPTP as unknown; it will be lazily evaluated whene a function asserts CPTP-ness
197 util_setFlagToUnknown(out.isApproxCPTP);
198
199 return out;
200}
201
202
203extern "C" void destroySuperOp(SuperOp op) {

Callers 12

SECTIONFunction · 0.85
SECTIONFunction · 0.85
SECTIONFunction · 0.85
createInlineKrausMapFunction · 0.85
_mixMultiQubitKrausMapFunction · 0.85
_createInlineKrausMapFunction · 0.85
demo_setKrausMapFunction · 0.85
demo_syncKrausMapFunction · 0.85
demo_setInlineKrausMapFunction · 0.85
demo_setKrausMapFunction · 0.85
demo_syncKrausMapFunction · 0.85

Calls 9

validate_envIsInitFunction · 0.85
powerOf2Function · 0.85
cpu_allocMatrixListFunction · 0.85
allocSuperOpFunction · 0.85
util_setFlagToUnknownFunction · 0.85

Tested by

no test coverage detected