The Quantum Exact Simulation Toolkit v4.2.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 136 of file convert.cpp.

136{ return getMatrixInner(m); }

◆ getMatrix() [2/11]

qmatrix getMatrix ( CompMatr1 m)

Definition at line 134 of file convert.cpp.

134{ return getMatrixInner(m); }

◆ getMatrix() [3/11]

qmatrix getMatrix ( CompMatr2 m)

Definition at line 135 of file convert.cpp.

135{ return getMatrixInner(m); }

◆ getMatrix() [4/11]

qmatrix getMatrix ( DiagMatr m)

Definition at line 139 of file convert.cpp.

139{ return getMatrixInner(m); }

◆ getMatrix() [5/11]

qmatrix getMatrix ( DiagMatr1 m)

Definition at line 137 of file convert.cpp.

137{ return getMatrixInner(m); }

◆ getMatrix() [6/11]

qmatrix getMatrix ( DiagMatr2 m)

Definition at line 138 of file convert.cpp.

138{ return getMatrixInner(m); }

◆ getMatrix() [7/11]

qmatrix getMatrix ( PauliStr str,
int numQubits )

Definition at line 164 of file convert.cpp.

164 {
165 DEMAND( numQubits >= paulis_getIndOfLefmostNonIdentityPauli(str) );
166
167 return getMatrix(str, getRange(numQubits));
168}

◆ getMatrix() [8/11]

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

Definition at line 149 of file convert.cpp.

149 {
150 DEMAND( targs.size() >= 1 );
151
152 qmatrix out = getIdentityMatrix(1);
153
154 for (auto t : targs) {
155 int ind = paulis_getPauliAt(str, t);
156 qmatrix matr = getPauliMatrix(ind);
157 out = getKroneckerProduct(matr, out);
158 }
159
160 return out;
161}
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 171 of file convert.cpp.

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

◆ getMatrix() [10/11]

qmatrix getMatrix ( Qureg qureg)

Definition at line 77 of file convert.cpp.

77 {
78 DEMAND( qureg.isDensityMatrix );
79
80 qindex numRows = 1;
81 qindex numCols = getPow2(qureg.numQubits);
82 qmatrix out = getZeroMatrix(numCols);
83
84 for (size_t r=0; r<out.size(); r++) {
85 qcomp* arr[] = {out[r].data()};
86 getDensityQuregAmps(arr, qureg, r, 0, numRows, numCols);
87
88 }
89
90 return out;
91}
void getDensityQuregAmps(qcomp **outAmps, Qureg qureg, qindex startRow, qindex startCol, qindex numRows, qindex numCols)
Definition qureg.cpp:461

◆ getMatrix() [11/11]

qmatrix getMatrix ( SuperOp m)

Definition at line 140 of file convert.cpp.

140{ return getMatrixInner(m); }

◆ getVector()

qvector getVector ( Qureg qureg)

Definition at line 68 of file convert.cpp.

68 {
69 DEMAND( !qureg.isDensityMatrix );
70
71 qvector out = getZeroVector(qureg.numAmps);
72 getQuregAmps(out.data(), qureg, 0, qureg.numAmps);
73 return out;
74}
void getQuregAmps(qcomp *outAmps, Qureg qureg, qindex startInd, qindex numAmps)
Definition qureg.cpp:452

◆ setQuregToReference() [1/2]

void setQuregToReference ( Qureg qureg,
qmatrix matrix )

Definition at line 48 of file convert.cpp.

48 {
49 DEMAND( qureg.isDensityMatrix );
50 DEMAND( getPow2(qureg.numQubits) == (qindex) matrix.size() );
51
52 qindex numRows = 1;
53 qindex numCols = getPow2(qureg.numQubits);
54
55 for (size_t r=0; r<matrix.size(); r++) {
56 qcomp* arr[] = {matrix[r].data()};
57 setDensityQuregAmps(qureg, r, 0, arr, numRows, numCols);
58 }
59}
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 40 of file convert.cpp.

40 {
41 DEMAND( !qureg.isDensityMatrix );
42 DEMAND( qureg.numAmps == (qindex) vector.size() );
43
44 setQuregAmps(qureg, 0, vector.data(), vector.size());
45}
void setQuregAmps(Qureg qureg, qindex startInd, qcomp *amps, qindex numAmps)