forked from Qiskit/qiskit
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin/negative_feature_10360' into neg…
…ative_feature_10360
- Loading branch information
Showing
3 changed files
with
86 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
diff --git a/qiskit/circuit/parameterexpression.py b/qiskit/circuit/parameterexpression.py | ||
index dc7614a30..71b9fb776 100644 | ||
--- a/qiskit/circuit/parameterexpression.py | ||
+++ b/qiskit/circuit/parameterexpression.py | ||
@@ -451,6 +451,17 @@ class ParameterExpression: | ||
|
||
return self._call(_log) | ||
|
||
+ def sign(self): | ||
+ """Sign of a ParameterExpression""" | ||
+ if _optionals.HAS_SYMENGINE: | ||
+ import symengine | ||
+ | ||
+ return self._call(symengine.sign) | ||
+ else: | ||
+ from sympy import sign as _sign | ||
+ | ||
+ return self._call(_sign) | ||
+ | ||
def __repr__(self): | ||
return f"{self.__class__.__name__}({str(self)})" | ||
|
||
diff --git a/releasenotes/notes/added-sign-feature-parameterexpression-57693dd69103dc8c.yaml b/releasenotes/notes/added-sign-feature-parameterexpression-57693dd69103dc8c.yaml | ||
new file mode 100644 | ||
index 000000000..b97382071 | ||
--- /dev/null | ||
+++ b/releasenotes/notes/added-sign-feature-parameterexpression-57693dd69103dc8c.yaml | ||
@@ -0,0 +1,18 @@ | ||
+--- | ||
+features: | ||
+ - | | ||
+ Added support for expressing the sign of a :class: 'ParameterExpression' | ||
+ Instead of assigning a concrete value and using ''numpy.sign'' or other library functions, the user can use the instance of the ParameterExpression | ||
+ class to calculate the sign and can work with the sign before the expression is fully assigned. | ||
+ | ||
+ It can be used as follows:: | ||
+ | ||
+ from qiskit.circuit import Parameter | ||
+ | ||
+ b = Parameter("phi") | ||
+ sign_value = b.sign() | ||
+ print("sign of an unassigned Parameter is: ", sign_value) | ||
+ print("Sign of a Parameter assigned to -3 is: ", sign_value.assign(b,-3)) | ||
+ | ||
+ Refer to ' #10360<https://github.com/Qiskit/qiskit-terra/issues/10360>'__ for more details. | ||
+ | ||
diff --git a/test/python/circuit/test_parameters.py b/test/python/circuit/test_parameters.py | ||
index 31b73c55a..b74eef431 100644 | ||
--- a/test/python/circuit/test_parameters.py | ||
+++ b/test/python/circuit/test_parameters.py | ||
@@ -939,6 +939,15 @@ class TestParameters(QiskitTestCase): | ||
self.assertEqual(expected1, output1) | ||
self.assertEqual(expected2, output2) | ||
|
||
+ def test_sign_of_parameter(self): | ||
+ """Test returning the sign of the value of the parameter""" | ||
+ | ||
+ b = Parameter("phi") | ||
+ sign_of_parameter = b.sign() | ||
+ self.assertEqual(sign_of_parameter.assign(b, -3), -1) | ||
+ self.assertEqual(sign_of_parameter.assign(b, 2), 1) | ||
+ self.assertEqual(sign_of_parameter.assign(b, 0), 0) | ||
+ | ||
@combine(target_type=["gate", "instruction"], parameter_type=["numbers", "parameters"]) | ||
def test_decompose_propagates_bound_parameters(self, target_type, parameter_type): | ||
"""Verify bind-before-decompose preserves bound values.""" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters