Ask Your Question

Revision history [back]

The preparser seems turned off in Pycharm. In a plain console you got

sage: p = 5256107634024827443646803157596584915370839195839782329597601469354483229307063
sage: j = 3611062252397503822281535488379195436991347721427144349104935225639485573271142
sage: K = GF(p)
sage: K((3 * j) / (1728 - j))
1674511800600631022371777328069227143110125063664501651628290807871952520681596

versus

sage: preparser(False)
sage: p = 5256107634024827443646803157596584915370839195839782329597601469354483229307063
sage: j = 3611062252397503822281535488379195436991347721427144349104935225639485573271142
sage: K = GF(p)
sage: K((3 * j) / (1728 - j))
5256107634024827443646803157596584915370839195839782329597601469354483229307060

In the console (and when preparser is on) integers are considered as Sage integers for which division produces rationals

sage: preparser(True)
sage: a = 3
sage: type(a)
<type 'sage.rings.integer.Integer'>
sage: 1 / 3
1/3
sage: type(1 / 3)
<type 'sage.rings.rational.Rational'>

whereas in Python (or when the preparser is off) these are Python integers for which division is the floor division or Euclidean division

sage: preparser(False)
sage: a = 3
sage: type(a)
<class 'int'>
sage: 1 / 3
0
sage: type(1 / 3)
<type 'int'>

If you want to fix the behavior in Pycharm you can for example write K(3 * j) / K(1728 - j) that will avoid the Python integer division.