Updates:
Labels: -Priority-Medium Priority-High
Comment #2 on issue 3038 by [email protected]: sign change in evalf of
complex value as precision is increased
http://code.google.com/p/sympy/issues/detail?id=3038
Here is another symptom, perhaps.
Substitution of two forms of an expression into another expression give
very different results upon evalf'ing. (The value of the expression (v)
and the simplified version (vcse) are given at the end of this discussion.)
>>> f = 5*sqrt(x) + 5*sqrt(-x + 1) + 5*sqrt(x + 1) - 6*sqrt(5)
>>> r, vcse = cse(v);vcse=vcse[0].subs(reversed(r))
>>> v.n()
0.655814631227503 - 0.e-22*I
>>> vcse.n()
0.655814631227503
So v and vcse evaluate to the same value but after substitution:
>>> f.subs(x,v).n(chop=True)
0
>>> f.subs(x,vcse).n(chop=True)
-8.09823827278194
Substituting into a simpler expression suggests that problem might be in
evalf_pow:
>>> sqrt(x).subs(x,v).n(chop=True)
0.809823827278194
>>> sqrt(x).subs(x,vcse).n(chop=True)
-0.809823827278194
Here are the values of v and vcse:
>>> from sympy.utilities.misc import filldedent
>>> print filldedent(str(v))
-1484/375 - (-2 + 2*sqrt(3)*I)*(-12459439/52734375 +
114*sqrt(12657)/78125)**(1/3) - 172564/((-140625/2 +
140625*sqrt(3)*I/2)*(-12459439/52734375 +
114*sqrt(12657)/78125)**(1/3))
>>> print filldedent(str(vcse))
-2*(278250*(1 - sqrt(3)*I)*(-114*sqrt(12657)/78125 +
12459439/52734375)**(1/3) - 140625*(-1)**(1/3)*(1 -
sqrt(3)*I)**2*(-114*sqrt(12657)/78125 + 12459439/52734375)**(2/3) +
172564*(-1)**(2/3))/(375*(1 - sqrt(3)*I)*(-76950*sqrt(12657) +
12459439)**(1/3))
--
You received this message because you are subscribed to the Google Groups
"sympy-issues" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sympy-issues?hl=en.