From fc86cbf91ace01e22775c427f8b5c15de7fb83a6 Mon Sep 17 00:00:00 2001 From: devteamaegis Date: Thu, 11 Jun 2026 02:34:14 -0400 Subject: [PATCH] fix(quilatom): format_parameter handles complex numbers with nonzero real and unit imaginary part format_parameter raised ValueError on complex values like 2+1j (real part nonzero, imaginary part exactly +/-1), e.g. when serializing Kraus operator entries into PRAGMA ADD-KRAUS via _create_kraus_pragmas. Emit +i / -i instead of raising, matching the existing format for other complex values. --- pyquil/quilatom.py | 14 ++++++++------ test/unit/test_parameters.py | 3 +++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/pyquil/quilatom.py b/pyquil/quilatom.py index 8028068e6..fd7b7f026 100644 --- a/pyquil/quilatom.py +++ b/pyquil/quilatom.py @@ -419,13 +419,15 @@ def format_parameter(element: ParameterDesignator) -> str: out += repr(r) if i == 1: - if not np.isclose(r, 0, atol=1e-14): - raise ValueError(f"Invalid complex number: {element}") - out = "i" + if np.isclose(r, 0, atol=1e-14): + out = "i" + else: + out += "+i" elif i == -1: - if not np.isclose(r, 0, atol=1e-14): - raise ValueError(f"Invalid complex number: {element}") - out = "-i" + if np.isclose(r, 0, atol=1e-14): + out = "-i" + else: + out += "-i" elif i < 0: out += repr(i) + "i" elif r != 0: diff --git a/test/unit/test_parameters.py b/test/unit/test_parameters.py index 355856b77..827a0679a 100644 --- a/test/unit/test_parameters.py +++ b/test/unit/test_parameters.py @@ -24,6 +24,9 @@ def test_format_parameter(): (-1j, "-i"), (1e-15 + 1j, "i"), (1e-15 - 1j, "-i"), + (2 + 1j, "2.0+i"), + (2 - 1j, "2.0-i"), + (-3 + 1j, "-3.0+i"), ] for test_case in test_cases: