Skip to content

Bad behavior when working with sympy #885

@Earendil-WBG

Description

@Earendil-WBG

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 healtharea/pythonInvolves Python codepriority/p1High priority

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions