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

Function getRandomOrIdentityApiMatrix

tests/unit/operations.cpp:415–462  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

413
414template <NumQubitsFlag Targs, ArgsFlag Args>
415auto getRandomOrIdentityApiMatrix(int numTargs, int elemsFlag) {
416
417 DEMAND(
418 Args == diagmatr ||
419 Args == diagpower ||
420 Args == compmatr );
421 DEMAND(
422 elemsFlag == 0 ||
423 elemsFlag == 1 ||
424 elemsFlag == 2 );
425
426 qmatrix qm;
427 if (elemsFlag == 0)
428 qm = getZeroMatrix(getPow2(numTargs));
429 if (elemsFlag == 1)
430 qm = getIdentityMatrix(getPow2(numTargs));
431 if (elemsFlag == 2)
432 qm = (Args == compmatr)?
433 getRandomUnitary(numTargs) :
434 getRandomDiagonalUnitary(numTargs);
435
436 if constexpr (Args == compmatr && Targs == one)
437 return getCompMatr1(qm);
438
439 if constexpr (Args == compmatr && Targs == two)
440 return getCompMatr2(qm);
441
442 if constexpr (Args == compmatr && Targs == any) {
443 CompMatr cm = createCompMatr(numTargs); // must be freed
444 setCompMatr(cm, qm);
445 return cm;
446 }
447
448 qvector dv = getDiagonals(qm);
449 constexpr bool diag = (Args == diagmatr || Args == diagpower);
450
451 if constexpr (diag && Targs == one)
452 return getDiagMatr1(dv);
453
454 if constexpr (diag && Targs == two)
455 return getDiagMatr2(dv);
456
457 if constexpr (diag && Targs == any) {
458 DiagMatr dm = createDiagMatr(numTargs); // must be freed
459 setDiagMatr(dm, dv);
460 return dm;
461 }
462}
463
464template <NumQubitsFlag Targs, ArgsFlag Args> auto getZeroApiMatrix (int numTargs) { return getRandomOrIdentityApiMatrix<Targs,Args>(numTargs, 0); }
465template <NumQubitsFlag Targs, ArgsFlag Args> auto getIdentityApiMatrix(int numTargs) { return getRandomOrIdentityApiMatrix<Targs,Args>(numTargs, 1); }

Callers

nothing calls this directly

Calls 14

getPow2Function · 0.85
createCompMatrFunction · 0.85
setCompMatrFunction · 0.85
getDiagonalsFunction · 0.85
createDiagMatrFunction · 0.85
setDiagMatrFunction · 0.85
getZeroMatrixFunction · 0.50
getIdentityMatrixFunction · 0.50
getRandomUnitaryFunction · 0.50
getRandomDiagonalUnitaryFunction · 0.50
getCompMatr1Function · 0.50
getCompMatr2Function · 0.50

Tested by

no test coverage detected