The Quantum Exact Simulation Toolkit v4.0.0
Loading...
Searching...
No Matches

Testing utilities for converting QuEST API structures (like Qureg, CompMatr, PauliStr) to/from testing types (like qvector and qmatrix). More...

Functions

qmatrix getMatrix (CompMatr)
 
qmatrix getMatrix (CompMatr1)
 
qmatrix getMatrix (CompMatr2)
 
qmatrix getMatrix (DiagMatr)
 
qmatrix getMatrix (DiagMatr1)
 
qmatrix getMatrix (DiagMatr2)
 
qmatrix getMatrix (PauliStr str, int numQubits)
 
qmatrix getMatrix (PauliStr str, vector< int > targs)
 
qmatrix getMatrix (PauliStrSum sum, int numQubits)
 
qmatrix getMatrix (Qureg)
 
qmatrix getMatrix (SuperOp)
 
qvector getVector (Qureg)
 
void setQuregToReference (Qureg, qmatrix)
 
void setQuregToReference (Qureg, qvector)
 

Detailed Description

Testing utilities for converting QuEST API structures (like Qureg, CompMatr, PauliStr) to/from testing types (like qvector and qmatrix).

Function Documentation

◆ getMatrix() [1/11]

qmatrix getMatrix ( CompMatr m)

Definition at line 126 of file convert.cpp.

126{ return getMatrixInner(m); }

◆ getMatrix() [2/11]

qmatrix getMatrix ( CompMatr1 m)

Definition at line 124 of file convert.cpp.

124{ return getMatrixInner(m); }

◆ getMatrix() [3/11]

qmatrix getMatrix ( CompMatr2 m)

Definition at line 125 of file convert.cpp.

125{ return getMatrixInner(m); }

◆ getMatrix() [4/11]

qmatrix getMatrix ( DiagMatr m)

Definition at line 129 of file convert.cpp.

129{ return getMatrixInner(m); }

◆ getMatrix() [5/11]

qmatrix getMatrix ( DiagMatr1 m)

Definition at line 127 of file convert.cpp.

127{ return getMatrixInner(m); }

◆ getMatrix() [6/11]

qmatrix getMatrix ( DiagMatr2 m)

Definition at line 128 of file convert.cpp.

128{ return getMatrixInner(m); }

◆ getMatrix() [7/11]

qmatrix getMatrix ( PauliStr str,
int numQubits )

Definition at line 159 of file convert.cpp.

159 {
160 DEMAND( numQubits >= paulis_getIndOfLefmostNonIdentityPauli(str) );
161
162 return getMatrix(str, getRange(numQubits));
163}

◆ getMatrix() [8/11]

qmatrix getMatrix ( PauliStr str,
vector< int > targs )

Definition at line 144 of file convert.cpp.

144 {
145 DEMAND( targs.size() >= 1 );
146
147 qmatrix out = getIdentityMatrix(1);
148
149 for (auto t : targs) {
150 int ind = paulis_getPauliAt(str, t);
151 qmatrix matr = getPauliMatrix(ind);
152 out = getKroneckerProduct(matr, out);
153 }
154
155 return out;
156}
qmatrix getKroneckerProduct(qmatrix a, qmatrix b)
Definition linalg.cpp:523
qmatrix getIdentityMatrix(size_t dim)
Definition qmatrix.cpp:30

◆ getMatrix() [9/11]

qmatrix getMatrix ( PauliStrSum sum,
int numQubits )

Definition at line 166 of file convert.cpp.

166 {
167 DEMAND( sum.numTerms > 0 );
168 DEMAND( numQubits >= paulis_getIndOfLefmostNonIdentityPauli(sum) );
169
170 qmatrix out = getZeroMatrix(getPow2(numQubits));
171
172 for (qindex i=0; i<sum.numTerms; i++)
173 out += sum.coeffs[i] * getMatrix(sum.strings[i], numQubits);
174
175 return out;
176}
qmatrix getZeroMatrix(size_t dim)
Definition qmatrix.cpp:18

◆ getMatrix() [10/11]

qmatrix getMatrix ( Qureg qureg)

Definition at line 67 of file convert.cpp.

67 {
68 DEMAND( qureg.isDensityMatrix );
69
70 qindex numRows = 1;
71 qindex numCols = getPow2(qureg.numQubits);
72 qmatrix out = getZeroMatrix(numCols);
73
74 for (size_t r=0; r<out.size(); r++) {
75 qcomp* arr[] = {out[r].data()};
76 getDensityQuregAmps(arr, qureg, r, 0, numRows, numCols);
77
78 }
79
80 return out;
81}
void getDensityQuregAmps(qcomp **outAmps, Qureg qureg, qindex startRow, qindex startCol, qindex numRows, qindex numCols)
Definition qureg.cpp:457

◆ getMatrix() [11/11]

qmatrix getMatrix ( SuperOp m)

Definition at line 130 of file convert.cpp.

130{ return getMatrixInner(m); }

◆ getVector()

qvector getVector ( Qureg qureg)

Definition at line 58 of file convert.cpp.

58 {
59 DEMAND( !qureg.isDensityMatrix );
60
61 qvector out = getZeroVector(qureg.numAmps);
62 getQuregAmps(out.data(), qureg, 0, qureg.numAmps);
63 return out;
64}
void getQuregAmps(qcomp *outAmps, Qureg qureg, qindex startInd, qindex numAmps)
Definition qureg.cpp:448

◆ setQuregToReference() [1/2]

void setQuregToReference ( Qureg qureg,
qmatrix matrix )

Definition at line 38 of file convert.cpp.

38 {
39 DEMAND( qureg.isDensityMatrix );
40 DEMAND( getPow2(qureg.numQubits) == (qindex) matrix.size() );
41
42 qindex numRows = 1;
43 qindex numCols = getPow2(qureg.numQubits);
44
45 for (size_t r=0; r<matrix.size(); r++) {
46 qcomp* arr[] = {matrix[r].data()};
47 setDensityQuregAmps(qureg, r, 0, arr, numRows, numCols);
48 }
49}
void setDensityQuregAmps(Qureg qureg, qindex startRow, qindex startCol, qcomp **amps, qindex numRows, qindex numCols)

◆ setQuregToReference() [2/2]

void setQuregToReference ( Qureg qureg,
qvector vector )

Definition at line 30 of file convert.cpp.

30 {
31 DEMAND( !qureg.isDensityMatrix );
32 DEMAND( qureg.numAmps == (qindex) vector.size() );
33
34 setQuregAmps(qureg, 0, vector.data(), vector.size());
35}
void setQuregAmps(Qureg qureg, qindex startInd, qcomp *amps, qindex numAmps)