@@ -1121,6 +1121,45 @@ def test_parameter_vector(self):
11211121 self .assertEqual ([x .name for x in new_circuit .parameters ], expected_params )
11221122 self .assertDeprecatedBitProperties (qc , new_circuit )
11231123
1124+ def test_parameter_vector_equality (self ):
1125+ """Test parameter vector equality after serialization."""
1126+
1127+ def dump_load_param_vec (qc ):
1128+ params = qc .parameters
1129+ vector = qc .parameters [0 ].vector
1130+ qpy_file = io .BytesIO ()
1131+ dump (qc , qpy_file )
1132+ qpy_file .seek (0 )
1133+ new_circuit = load (qpy_file )[0 ]
1134+ new_params = new_circuit .parameters
1135+ new_vector = new_circuit .parameters [0 ].vector
1136+ return params , new_params , vector , new_vector
1137+
1138+ with self .subTest ("manual" ):
1139+ x = ParameterVector ("γ" , 2 )
1140+ qc = QuantumCircuit (3 )
1141+ qc .rzz (x [0 ], 0 , 1 )
1142+ with self .assertWarns (UserWarning ):
1143+ params , new_params , vector , new_vector = dump_load_param_vec (qc )
1144+
1145+ self .assertTrue (all (p == q for p , q in zip (params , new_params )))
1146+ # vector[0] is part of the circuit
1147+ self .assertTrue (vector [0 ] == new_vector [0 ])
1148+ # vector[1] is not part of the circuit
1149+ self .assertTrue (vector [1 ] != new_vector [1 ])
1150+
1151+ with self .subTest ("real_amplitudes" ):
1152+ qc = real_amplitudes (2 , reps = 1 )
1153+ params , new_params , vector , new_vector = dump_load_param_vec (qc )
1154+ self .assertTrue (all (p == q for p , q in zip (params , new_params )))
1155+ self .assertTrue (all (p == q for p , q in zip (vector , new_vector )))
1156+
1157+ with self .subTest ("zz_feature_map" ):
1158+ qc = zz_feature_map (2 , reps = 1 )
1159+ params , new_params , vector , new_vector = dump_load_param_vec (qc )
1160+ self .assertTrue (all (p == q for p , q in zip (params , new_params )))
1161+ self .assertTrue (all (p == q for p , q in zip (vector , new_vector )))
1162+
11241163 def test_parameter_vector_element_in_expression (self ):
11251164 """Test a circuit with a parameter vector used in a parameter expression."""
11261165 qc = QuantumCircuit (7 )
0 commit comments