From d05495eaa350fa220f011d368a8ca0ad843fddac Mon Sep 17 00:00:00 2001 From: nate stemen Date: Tue, 8 Oct 2024 14:31:35 -0700 Subject: [PATCH 1/2] Ensure scalar parameter names are preserved during conversion --- cirq-rigetti/cirq_rigetti/quil_input.py | 2 ++ cirq-rigetti/cirq_rigetti/quil_input_test.py | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/cirq-rigetti/cirq_rigetti/quil_input.py b/cirq-rigetti/cirq_rigetti/quil_input.py index 3e82684b3ef..cd5395ef895 100644 --- a/cirq-rigetti/cirq_rigetti/quil_input.py +++ b/cirq-rigetti/cirq_rigetti/quil_input.py @@ -534,6 +534,8 @@ def quil_expression_to_sympy(expression: ParameterDesignator): elif isinstance(expression, Parameter): # pragma: no cover return sympy.Symbol(expression.name) elif isinstance(expression, MemoryReference): + if expression.declared_size == 1: + return sympy.Symbol(expression.name) return sympy.Symbol(expression.name + f"_{expression.offset}") elif isinstance(expression, Function): if expression.name == "SIN": # pragma: no cover diff --git a/cirq-rigetti/cirq_rigetti/quil_input_test.py b/cirq-rigetti/cirq_rigetti/quil_input_test.py index d6b5b72b7f5..e1e24359ec3 100644 --- a/cirq-rigetti/cirq_rigetti/quil_input_test.py +++ b/cirq-rigetti/cirq_rigetti/quil_input_test.py @@ -252,6 +252,16 @@ def test_parametric_quil(): assert cirq_circuit == circuit +QUIL_PROGRAM_WITH_SINGLE_PARAMETER = """ +DECLARE theta REAL[1] +RZ(theta) 0 +""" + +def test_scalar_param_name_unchanged_by_conversion(): + """Ensure the name of scalar parameter does not change during conversion.""" + program = Program(QUIL_PROGRAM_WITH_SINGLE_PARAMETER) + circuit = circuit_from_quil(program) + assert cirq.parameter_names(circuit) == {"theta"} def test_measurement_without_classical_reg(): """Measure operations must declare a classical register.""" From 02a8b80f647bdedddfaa90db3c961460b61b7dc6 Mon Sep 17 00:00:00 2001 From: nate stemen Date: Tue, 8 Oct 2024 21:00:55 -0700 Subject: [PATCH 2/2] format --- cirq-rigetti/cirq_rigetti/quil_input_test.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cirq-rigetti/cirq_rigetti/quil_input_test.py b/cirq-rigetti/cirq_rigetti/quil_input_test.py index e1e24359ec3..66f4b85452d 100644 --- a/cirq-rigetti/cirq_rigetti/quil_input_test.py +++ b/cirq-rigetti/cirq_rigetti/quil_input_test.py @@ -252,17 +252,20 @@ def test_parametric_quil(): assert cirq_circuit == circuit + QUIL_PROGRAM_WITH_SINGLE_PARAMETER = """ DECLARE theta REAL[1] RZ(theta) 0 """ + def test_scalar_param_name_unchanged_by_conversion(): """Ensure the name of scalar parameter does not change during conversion.""" program = Program(QUIL_PROGRAM_WITH_SINGLE_PARAMETER) circuit = circuit_from_quil(program) assert cirq.parameter_names(circuit) == {"theta"} + def test_measurement_without_classical_reg(): """Measure operations must declare a classical register.""" with pytest.raises(UnsupportedQuilInstruction):