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.
I found that when using sympy expression as coefficients in
FermionOperator
, the expression would be transformed automatically into float numbers. For example:This gives the output:
But when doing:
Then it outputs:
Which is not what I would expect. This is probably due to that, in the
SymbolicOperator
class' addition method (line 435-436):When
term
isn't find in self, its coefficient is set to0.0
, which might cause some type conversion for sympy expression. Since it originates inSymbolicOperator
, it would probably happen in other operator classes.Version: 1.6.1