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

Function getRandomQMatrix

tests/deprecated/test_utilities.cpp:492–510  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

490}
491
492QMatrix getRandomQMatrix(int dim) {
493 DEMAND( dim > 1 );
494
495 QMatrix matr = getZeroMatrix(dim);
496 for (int i=0; i<dim; i++) {
497 for (int j=0; j<dim; j++) {
498
499 // generate 2 normally-distributed random numbers via Box-Muller
500 qreal a = rand()/(qreal) RAND_MAX;
501 qreal b = rand()/(qreal) RAND_MAX;
502 if (a == 0) a = REAL_EPS; // prevent rand()=0 creation of NaN
503 qreal r1 = sqrt(-2 * log(a)) * cos(2 * 3.14159265 * b);
504 qreal r2 = sqrt(-2 * log(a)) * sin(2 * 3.14159265 * b);
505
506 matr[i][j] = r1 + r2 * (qcomp) 1i;
507 }
508 }
509 return matr;
510}
511
512bool areEqual(QVector a, QVector b) {
513 DEMAND( a.size() == b.size() );

Callers 4

getRandomUnitaryFunction · 0.85
test_operators.cppFile · 0.85

Calls 1

getZeroMatrixFunction · 0.70

Tested by

no test coverage detected