-
Notifications
You must be signed in to change notification settings - Fork 197
Expand file tree
/
Copy pathrandom.hpp
More file actions
75 lines (56 loc) · 2.07 KB
/
Copy pathrandom.hpp
File metadata and controls
75 lines (56 loc) · 2.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/** @file
* @author Tyson Jones
*
* @defgroup testutilsrandom Random
* @ingroup testutils
* @brief
* Testing utilities which generate random objects
* independently of QuEST's internal generators.
* @{
*/
#ifndef RANDOM_HPP
#define RANDOM_HPP
#include "qvector.hpp"
#include "qmatrix.hpp"
#include "macros.hpp"
#include "linalg.hpp"
#include "lists.hpp"
#include "quest.h"
#include <vector>
using std::vector;
#include <tuple>
using std::tuple;
void setRandomTestStateSeeds();
int getRandomInt(int min, int maxExcl);
qreal getRandomReal(qreal min, qreal maxExcl);
qreal getRandomPhase();
qcomp getRandomComplex();
qcomp getRandomUnitComplex();
listpair getRandomFixedNumCtrlsTargs(int numQubits, int numCtrls, int numTargs);
listtrio getRandomVariNumCtrlsStatesTargs(int numQubits, int minNumTargs, int maxNumTargsIncl);
qvector getRandomVector(size_t dim);
qmatrix getRandomMatrix(size_t dim);
qmatrix getRandomDiagonalMatrix(size_t dim);
qmatrix getRandomNonSquareMatrix(size_t numRows, size_t numCols);
qvector getRandomStateVector(int numQb);
qmatrix getRandomDensityMatrix(int numQb);
qmatrix getRandomPureDensityMatrix(int numQb);
void setToRandomState(qvector& state);
void setToRandomState(qmatrix& state);
qmatrix getRandomUnitary(int numQb);
qmatrix getRandomDiagonalUnitary(int numQb);
qmatrix getRandomDiagonalHermitian(int numQb);
vector<qmatrix> getRandomKrausMap(int numQb, int numOps);
PauliStr getRandomPauliStr(int numQubits);
PauliStr getRandomPauliStr(vector<int> targs);
PauliStr getRandomDiagPauliStr(int numQubits);
vector<int> getRandomInts(int min, int maxExcl, int len);
vector<int> getRandomOutcomes(int len);
vector<int> getRandomSubRange(int start, int endExcl, int numElems);
vector<qreal> getRandomProbabilities(int numProbs);
vector<qvector> getRandomOrthonormalVectors(size_t dim, int numVecs);
vector<qvector> getRandomOrthonormalStateVectors(int numQb, int numStates);
PauliStrSum createRandomPauliStrSum(int numQubits, int numTerms);
PauliStrSum createRandomNonHermitianPauliStrSum(int numQubits, int numTerms);
#endif // RANDOM_HPP
/** @} (end defgroup) */