-
Notifications
You must be signed in to change notification settings - Fork 401
Closed
Labels
area/healthInvolves code and/or project healthInvolves code and/or project healtharea/pythonInvolves Python codeInvolves Python codepriority/p1High priorityHigh priority
Description
I found that when using sympy expression as coefficients in FermionOperator
, the expression would be transformed automatically into float numbers. For example:
from openfermion.ops import FermionOperator
from sympy import Rational
a = FermionOperator('0^ 0', Rational(1, 2))
a
This gives the output:
1/2 [0^ 0]
But when doing:
a = FermionOperator('0^ 0', Rational(1, 2))
b = FermionOperator('1^ 1', Rational(1, 2))
a + b
Then it outputs:
1/2 [0^ 0] +
0.500000000000000 [1^ 1]
Which is not what I would expect. This is probably due to that, in the SymbolicOperator
class' addition method (line 435-436):
for term in addend.terms:
self.terms[term] = self.terms.get(term, 0.0) + addend.terms[term]
When term
isn't find in self, its coefficient is set to 0.0
, which might cause some type conversion for sympy expression. Since it originates in SymbolicOperator
, it would probably happen in other operator classes.
Version: 1.6.1
Metadata
Metadata
Assignees
Labels
area/healthInvolves code and/or project healthInvolves code and/or project healtharea/pythonInvolves Python codeInvolves Python codepriority/p1High priorityHigh priority