@@ -52,7 +52,7 @@ def extract_params(
52
52
p = p1 .union (p2 )
53
53
54
54
n_params = len (p )
55
- exprs = list (chain (* [instr [ 0 ]. params for instr in circ1 .data + circ2 .data if instr [ 0 ] .params != []]))
55
+ exprs = list (chain (* [instr . operation . params for instr in circ1 .data + circ2 .data if instr . operation .params != []]))
56
56
57
57
def is_expr (x : float | Parameter | ParameterExpression ) -> bool :
58
58
return isinstance (x , (Parameter , ParameterExpression ))
@@ -115,14 +115,14 @@ def check_parameterized(
115
115
total_simulations_started = 0
116
116
total_simulations_finished = 0
117
117
118
- def update_stats (res : EquivalenceCheckingManager .Results ) -> None :
118
+ def _update_stats (res : EquivalenceCheckingManager .Results ) -> None :
119
119
nonlocal total_preprocessing_time , total_runtime , total_simulations_started , total_simulations_finished
120
120
total_preprocessing_time += res .preprocessing_time
121
121
total_runtime += res .check_time
122
122
total_simulations_started += res .started_simulations
123
123
total_simulations_finished += res .performed_simulations
124
124
125
- def write_stats (i : int , res : EquivalenceCheckingManager .Results ) -> None :
125
+ def _write_stats (i : int , res : EquivalenceCheckingManager .Results ) -> None :
126
126
nonlocal total_preprocessing_time , total_runtime , total_simulations_started , total_simulations_finished
127
127
res .check_time = total_runtime
128
128
res .preprocessing_time = total_preprocessing_time
@@ -135,15 +135,15 @@ def write_stats(i: int, res: EquivalenceCheckingManager.Results) -> None:
135
135
if res .considered_equivalent ():
136
136
return res
137
137
138
- update_stats (res )
138
+ _update_stats (res )
139
139
140
140
timeout = __adjust_timeout (configuration .execution .timeout , res )
141
141
n_checks = configuration .parameterized .additional_instantiations
142
142
tol = configuration .parameterized .parameterized_tolerance
143
143
144
144
parameters , mat , offsets = extract_params (circ1 , circ2 )
145
145
146
- def instantiate_params (
146
+ def _instantiate_params (
147
147
qc1 : QuantumCircuit , qc2 : QuantumCircuit , b : NDArray [np .float64 ]
148
148
) -> tuple [QuantumCircuit , QuantumCircuit , float ]:
149
149
start_time = time .time ()
@@ -153,67 +153,68 @@ def instantiate_params(
153
153
qc1_bound = qc1 .assign_parameters (param_map )
154
154
qc2_bound = qc2 .assign_parameters (param_map )
155
155
156
- def round_zero_params (qc : QuantumCircuit ) -> QuantumCircuit :
156
+ def _round_zero_params (qc : QuantumCircuit ) -> QuantumCircuit :
157
157
for instr in qc .data :
158
- if not hasattr (instr [0 ], "mutable" ) or instr [0 ].mutable :
159
- params = instr [0 ].params
160
- instr [0 ].params = [float (x ) for x in params ]
161
- instr [0 ].params = [0 if np .abs (x ) < tol else x for x in instr [0 ].params ]
158
+ operation = instr .operation
159
+ if not hasattr (operation , "mutable" ) or operation .mutable :
160
+ params = operation .params
161
+ operation .params = [float (x ) for x in params ]
162
+ operation .params = [0 if np .abs (x ) < tol else x for x in operation .params ]
162
163
return qc
163
164
164
- qc1_bound = round_zero_params (qc1_bound )
165
- qc2_bound = round_zero_params (qc2_bound )
165
+ qc1_bound = _round_zero_params (qc1_bound )
166
+ qc2_bound = _round_zero_params (qc2_bound )
166
167
return qc1_bound , qc2_bound , time .time () - start_time
167
168
168
- def instantiate_params_zero (
169
+ def _instantiate_params_zero (
169
170
qc1 : QuantumCircuit , qc2 : QuantumCircuit
170
171
) -> tuple [QuantumCircuit , QuantumCircuit , float ]:
171
- return instantiate_params (qc1 , qc2 , offsets )
172
+ return _instantiate_params (qc1 , qc2 , offsets )
172
173
173
- def instantiate_params_phases (
174
+ def _instantiate_params_phases (
174
175
qc1 : QuantumCircuit , qc2 : QuantumCircuit
175
176
) -> tuple [QuantumCircuit , QuantumCircuit , float ]:
176
177
phases = [0 , np .pi , np .pi / 2 , - np .pi / 2 , np .pi / 4 , - np .pi / 4 ]
177
178
rng = np .random .default_rng ()
178
179
b = rng .choice (phases , size = len (offsets )) + offsets
179
- return instantiate_params (qc1 , qc2 , b )
180
+ return _instantiate_params (qc1 , qc2 , b )
180
181
181
- circ1_inst , circ2_inst , runtime = instantiate_params_zero (circ1 , circ2 )
182
+ circ1_inst , circ2_inst , runtime = _instantiate_params_zero (circ1 , circ2 )
182
183
timeout = __adjust_timeout (timeout , runtime )
183
184
184
185
if timeout < 0 :
185
- write_stats (1 , res )
186
+ _write_stats (1 , res )
186
187
res .equivalence = EquivalenceCriterion .no_information
187
188
return res
188
189
189
190
res = check_instantiated (circ1_inst , circ2_inst , configuration )
190
- update_stats (res )
191
+ _update_stats (res )
191
192
if res .equivalence == EquivalenceCriterion .not_equivalent :
192
- write_stats (1 , res )
193
+ _write_stats (1 , res )
193
194
return res
194
195
195
196
for i in range (n_checks ):
196
- circ1_inst , circ2_inst , runtime = instantiate_params_phases (circ1 , circ2 )
197
+ circ1_inst , circ2_inst , runtime = _instantiate_params_phases (circ1 , circ2 )
197
198
timeout = __adjust_timeout (timeout , runtime )
198
199
res = check_instantiated (circ1_inst , circ2_inst , configuration )
199
200
timeout = __adjust_timeout (timeout , res )
200
201
201
202
if timeout < 0 :
202
- write_stats (i + 2 , res )
203
+ _write_stats (i + 2 , res )
203
204
res .equivalence = EquivalenceCriterion .no_information
204
205
return res
205
206
206
- update_stats (res )
207
+ _update_stats (res )
207
208
208
209
if res .equivalence == EquivalenceCriterion .not_equivalent :
209
- write_stats (i + 2 , res )
210
+ _write_stats (i + 2 , res )
210
211
return res
211
212
212
213
res = check_instantiated_random (circ1 , circ2 , parameters , configuration )
213
214
timeout = __adjust_timeout (timeout , runtime )
214
215
if timeout < 0 :
215
216
res .equivalence = EquivalenceCriterion .no_information
216
217
217
- update_stats (res )
218
- write_stats (n_checks + 2 , res )
218
+ _update_stats (res )
219
+ _write_stats (n_checks + 2 , res )
219
220
return res
0 commit comments