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..66f4b85452d 100644 --- a/cirq-rigetti/cirq_rigetti/quil_input_test.py +++ b/cirq-rigetti/cirq_rigetti/quil_input_test.py @@ -253,6 +253,19 @@ 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):