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

Testing utilities which define 'qvector', used as a reference proxy to a quantum statevector. More...

Typedefs

typedef std::vector< qcomp > qvector
 

Functions

qvector getConstantVector (size_t dim, qcomp elem)
 
qvector getZeroVector (size_t dim)
 
qvector operator* (const qcomp &, const qvector &)
 
qvector operator* (const qreal &, const qvector &)
 
qvector operator* (const qvector &, const qcomp &)
 
qvector operator* (const qvector &, const qreal &)
 
qvector operator*= (qvector &, const qcomp &)
 
qvector operator*= (qvector &, const qreal &)
 
qvector operator+ (const qvector &, const qvector &)
 
qvector operator+= (qvector &, const qvector &)
 
qvector operator- (const qvector &, const qvector &)
 
qvector operator-= (qvector &, const qvector &)
 
qvector operator/ (const qvector &, const qcomp &)
 
qvector operator/ (const qvector &, const qreal &)
 
qvector operator/= (qvector &, const qcomp &)
 
qvector operator/= (qvector &, const qreal &)
 
void setSubVector (qvector &dest, qvector sub, size_t i)
 
void setToDebugState (qvector &v)
 

Detailed Description

Testing utilities which define 'qvector', used as a reference proxy to a quantum statevector.

Typedef Documentation

◆ qvector

typedef std::vector<qcomp> qvector

Definition at line 20 of file qvector.hpp.

Function Documentation

◆ getConstantVector()

qvector getConstantVector ( size_t dim,
qcomp elem )

Definition at line 22 of file qvector.cpp.

22 {
23 DEMAND( dim >= 1 );
24
25 return qvector(dim, elem);
26}

◆ getZeroVector()

qvector getZeroVector ( size_t dim)

Definition at line 16 of file qvector.cpp.

16 {
17 // permit dim = 0
18
19 return qvector(dim, 0);
20}

◆ operator*() [1/4]

qvector operator* ( const qcomp & a,
const qvector & v )

Definition at line 33 of file qvector.cpp.

33 {
34 qvector out = v;
35
36 for (auto& x : out)
37 x *= a;
38
39 return out;
40}

◆ operator*() [2/4]

qvector operator* ( const qreal & a,
const qvector & v )

Definition at line 51 of file qvector.cpp.

51 {
52 return qcomp(a,0) * v;
53}

◆ operator*() [3/4]

qvector operator* ( const qvector & v,
const qcomp & a )

Definition at line 42 of file qvector.cpp.

42 {
43 return a * v;
44}

◆ operator*() [4/4]

qvector operator* ( const qvector & v,
const qreal & a )

Definition at line 55 of file qvector.cpp.

55 {
56 return a * v;
57}

◆ operator*=() [1/2]

qvector operator*= ( qvector & v,
const qcomp & a )

Definition at line 46 of file qvector.cpp.

46 {
47 v = a * v;
48 return v;
49}

◆ operator*=() [2/2]

qvector operator*= ( qvector & v,
const qreal & a )

Definition at line 59 of file qvector.cpp.

59 {
60 v = a * v;
61 return v;
62}

◆ operator+()

qvector operator+ ( const qvector & v1,
const qvector & v2 )

Definition at line 94 of file qvector.cpp.

94 {
95 DEMAND( v1.size() == v2.size() );
96
97 qvector out = v1;
98
99 for (size_t i=0; i<v2.size(); i++)
100 out[i] += v2[i];
101
102 return out;
103}

◆ operator+=()

qvector operator+= ( qvector & v1,
const qvector & v2 )

Definition at line 105 of file qvector.cpp.

105 {
106 v1 = v1 + v2;
107 return v1;
108}

◆ operator-()

qvector operator- ( const qvector & v1,
const qvector & v2 )

Definition at line 115 of file qvector.cpp.

115 {
116 return v1 + (-1 * v2);
117}

◆ operator-=()

qvector operator-= ( qvector & v1,
const qvector & v2 )

Definition at line 119 of file qvector.cpp.

119 {
120 v1 = v1 - v2;
121 return v1;
122}

◆ operator/() [1/2]

qvector operator/ ( const qvector & v,
const qcomp & a )

Definition at line 69 of file qvector.cpp.

69 {
70 DEMAND( std::abs(a) != 0 );
71
72 return (1/a) * v;
73}

◆ operator/() [2/2]

qvector operator/ ( const qvector & v,
const qreal & a )

Definition at line 80 of file qvector.cpp.

80 {
81 return v / qcomp(a,0);
82}

◆ operator/=() [1/2]

qvector operator/= ( qvector & v,
const qcomp & a )

Definition at line 75 of file qvector.cpp.

75 {
76 v = v / a;
77 return v;
78}

◆ operator/=() [2/2]

qvector operator/= ( qvector & v,
const qreal & a )

Definition at line 84 of file qvector.cpp.

84 {
85 v = v / a;
86 return v;
87}

◆ setSubVector()

void setSubVector ( qvector & dest,
qvector sub,
size_t i )

Definition at line 129 of file qvector.cpp.

129 {
130 DEMAND( sub.size() + i <= dest.size() );
131
132 for (size_t j=0; j<sub.size(); j++)
133 dest[j+i] = sub[j];
134}

◆ setToDebugState()

void setToDebugState ( qvector & v)

Definition at line 136 of file qvector.cpp.

136 {
137 DEMAND( !v.empty() );
138
139 for (size_t i=0; i<v.size(); i++)
140 v[i] = qcomp(2*i/10., (2*i+1)/10.);
141}