@@ -18,20 +18,14 @@ namespace cudaq {
18
18
elementary_operator::elementary_operator (std::string operator_id,
19
19
std::vector<int > degrees)
20
20
: id(operator_id), degrees(degrees) {}
21
- elementary_operator::elementary_operator (const elementary_operator &other)
22
- : m_ops(other.m_ops), expected_dimensions(other.expected_dimensions),
23
- degrees (other.degrees), id(other.id) {}
24
- elementary_operator::elementary_operator (elementary_operator &other)
25
- : m_ops(other.m_ops), expected_dimensions(other.expected_dimensions),
26
- degrees(other.degrees), id(other.id) {}
27
21
28
22
elementary_operator elementary_operator::identity (int degree) {
29
23
std::string op_id = " identity" ;
30
24
std::vector<int > degrees = {degree};
31
25
auto op = elementary_operator (op_id, degrees);
32
26
// A dimension of -1 indicates this operator can act on any dimension.
33
27
op.expected_dimensions [degree] = -1 ;
34
- if (op. m_ops .find (op_id) == op. m_ops .end ()) {
28
+ if (elementary_operator:: m_ops.find (op_id) == elementary_operator:: m_ops.end ()) {
35
29
auto func = [&](std::map<int , int > dimensions,
36
30
std::map<std::string, std::complex<double >> _none) {
37
31
int degree = op.degrees [0 ];
@@ -57,7 +51,7 @@ elementary_operator elementary_operator::zero(int degree) {
57
51
auto op = elementary_operator (op_id, degrees);
58
52
// A dimension of -1 indicates this operator can act on any dimension.
59
53
op.expected_dimensions [degree] = -1 ;
60
- if (op. m_ops .find (op_id) == op. m_ops .end ()) {
54
+ if (elementary_operator:: m_ops.find (op_id) == elementary_operator:: m_ops.end ()) {
61
55
auto func = [&](std::map<int , int > dimensions,
62
56
std::map<std::string, std::complex<double >> _none) {
63
57
// Need to set the degree via the op itself because the
@@ -83,7 +77,7 @@ elementary_operator elementary_operator::annihilate(int degree) {
83
77
auto op = elementary_operator (op_id, degrees);
84
78
// A dimension of -1 indicates this operator can act on any dimension.
85
79
op.expected_dimensions [degree] = -1 ;
86
- if (op. m_ops .find (op_id) == op. m_ops .end ()) {
80
+ if (elementary_operator:: m_ops.find (op_id) == elementary_operator:: m_ops.end ()) {
87
81
auto func = [&](std::map<int , int > dimensions,
88
82
std::map<std::string, std::complex<double >> _none) {
89
83
auto degree = op.degrees [0 ];
@@ -108,7 +102,7 @@ elementary_operator elementary_operator::create(int degree) {
108
102
auto op = elementary_operator (op_id, degrees);
109
103
// A dimension of -1 indicates this operator can act on any dimension.
110
104
op.expected_dimensions [degree] = -1 ;
111
- if (op. m_ops .find (op_id) == op. m_ops .end ()) {
105
+ if (elementary_operator:: m_ops.find (op_id) == elementary_operator:: m_ops.end ()) {
112
106
auto func = [&](std::map<int , int > dimensions,
113
107
std::map<std::string, std::complex<double >> _none) {
114
108
auto degree = op.degrees [0 ];
@@ -133,7 +127,7 @@ elementary_operator elementary_operator::position(int degree) {
133
127
auto op = elementary_operator (op_id, degrees);
134
128
// A dimension of -1 indicates this operator can act on any dimension.
135
129
op.expected_dimensions [degree] = -1 ;
136
- if (op. m_ops .find (op_id) == op. m_ops .end ()) {
130
+ if (elementary_operator:: m_ops.find (op_id) == elementary_operator:: m_ops.end ()) {
137
131
auto func = [&](std::map<int , int > dimensions,
138
132
std::map<std::string, std::complex<double >> _none) {
139
133
auto degree = op.degrees [0 ];
@@ -160,7 +154,7 @@ elementary_operator elementary_operator::momentum(int degree) {
160
154
auto op = elementary_operator (op_id, degrees);
161
155
// A dimension of -1 indicates this operator can act on any dimension.
162
156
op.expected_dimensions [degree] = -1 ;
163
- if (op. m_ops .find (op_id) == op. m_ops .end ()) {
157
+ if (elementary_operator:: m_ops.find (op_id) == elementary_operator:: m_ops.end ()) {
164
158
auto func = [&](std::map<int , int > dimensions,
165
159
std::map<std::string, std::complex<double >> _none) {
166
160
auto degree = op.degrees [0 ];
@@ -189,7 +183,7 @@ elementary_operator elementary_operator::number(int degree) {
189
183
auto op = elementary_operator (op_id, degrees);
190
184
// A dimension of -1 indicates this operator can act on any dimension.
191
185
op.expected_dimensions [degree] = -1 ;
192
- if (op. m_ops .find (op_id) == op. m_ops .end ()) {
186
+ if (elementary_operator:: m_ops.find (op_id) == elementary_operator:: m_ops.end ()) {
193
187
auto func = [&](std::map<int , int > dimensions,
194
188
std::map<std::string, std::complex<double >> _none) {
195
189
auto degree = op.degrees [0 ];
@@ -214,7 +208,7 @@ elementary_operator elementary_operator::parity(int degree) {
214
208
auto op = elementary_operator (op_id, degrees);
215
209
// A dimension of -1 indicates this operator can act on any dimension.
216
210
op.expected_dimensions [degree] = -1 ;
217
- if (op. m_ops .find (op_id) == op. m_ops .end ()) {
211
+ if (elementary_operator:: m_ops.find (op_id) == elementary_operator:: m_ops.end ()) {
218
212
auto func = [&](std::map<int , int > dimensions,
219
213
std::map<std::string, std::complex<double >> _none) {
220
214
auto degree = op.degrees [0 ];
@@ -240,7 +234,7 @@ elementary_operator::displace(int degree, std::complex<double> amplitude) {
240
234
auto op = elementary_operator (op_id, degrees);
241
235
// A dimension of -1 indicates this operator can act on any dimension.
242
236
op.expected_dimensions [degree] = -1 ;
243
- if (op. m_ops .find (op_id) == op. m_ops .end ()) {
237
+ if (elementary_operator:: m_ops.find (op_id) == elementary_operator:: m_ops.end ()) {
244
238
auto func = [&](std::map<int , int > dimensions,
245
239
std::map<std::string, std::complex<double >> _none) {
246
240
auto degree = op.degrees [0 ];
@@ -277,11 +271,11 @@ elementary_operator::squeeze(int degree, std::complex<double> amplitude) {
277
271
complex_matrix elementary_operator::to_matrix (
278
272
const std::map<int , int > dimensions,
279
273
const std::map<std::string, std::complex<double >> parameters) const {
280
- if (m_ops.find (id) == m_ops.end ())
274
+ if (elementary_operator:: m_ops.find (id) == elementary_operator:: m_ops.end ())
281
275
throw std::runtime_error (
282
276
fmt::format (" No operator found with this ID '{}'" , id));
283
277
284
- return m_ops.at (id).generator (dimensions, parameters);
278
+ return elementary_operator:: m_ops.at (id).generator (dimensions, parameters);
285
279
}
286
280
287
281
template <typename TEval>
0 commit comments