I'm exploring Sympy's behavior with regard to automatic distribution
of expressions.  Purely from experimenting, I noticed a few things:
In [1]: exp1 = x*(x-y)
In [2]: exp2 = x*x-x*y
In [3]: exp3 = 4*(x-y)
In [4]: exp4 = 4*x-4*y
In [5]: exp1
Out[5]: x⋅(x - y)
In [6]: exp2
Out[6]:
        2
-x⋅y + x
In [7]: exp3
Out[7]: -4⋅y + 4⋅x
In [8]: exp4
Out[8]: -4⋅y + 4⋅x
In [9]: factor(exp1)
Out[9]: x⋅(x - y)
In [10]: factor(exp2)
Out[10]: x⋅(x - y)
In [11]: factor(exp3)
Out[11]: -4⋅y + 4⋅x
In [12]: factor(exp4)
Out[12]: -4⋅y + 4⋅x

I compared these four expressions in Sympy, Mathematica 7, Matlab
2008a (Maple under the hood), Matlab 2008b (Mupad under the hood).
The results are as follows:
Mathematica 7
In[5]:= x*(x-y)
Out[5]= x (x-y)
In[6]:= x*x-x*y
Out[6]= x^2-x y
In[7]:= 4*(x-y)
Out[7]= 4 (x-y)
In[8]:= 4*x-4*y
Out[8]= 4 x-4 y
In[9]:= Factor[In[5]]
Out[9]= x (x-y)
In[10]:= Factor[In[6]]
Out[10]= x (x-y)
In[11]:= Factor[In[7]]
Out[11]= 4 (x-y)
In[12]:= Factor[In[8]]
Out[12]= 4 (x-y)

Matlab 2008a (Maple)
>> exp1 = x*(x-y)
exp1 =
x*(x-y)
>> exp2 = x*x-x*y
exp2 =
x^2-x*y
>> exp3 = 4*(x-y)
exp3 =
4*x-4*y
>> exp4=4*x-4*y
exp4 =
4*x-4*y
>> factor(exp1)
ans =
x*(x-y)
>> factor(exp2)
ans =
x*(x-y)
>> factor(exp3)
ans =
4*x-4*y
>> factor(exp4)
ans
4*x-4*y
>>

Matlab 2008b (MuPad):
>> exp1 = x*(x-y)
exp1 =
x*(x - y)
>> exp2=x*x-x*y
exp2 =
x^2 - x*y
>> exp3=4*(x-y)
exp3 =
4*x - 4*y
>> exp4=4*x-4*y
exp4 =
4*x - 4*y
>> factor(exp1)
ans =
x*(x - y)
>> factor(exp2)
ans =
x*(x - y)
>> factor(exp3)
ans =
4*(x - y)
>> factor(exp4)
ans =
4*(x - y)
>>

So three out of 4 automatically distribute things like 4*(x-y), but
not things like x*(x-y).  In the case of Sympy and Matlab 2008a, this
automatic distribution is not easily reversible by a simple call to
factor.  It seems to me that:
1) there should be a way to control whether or not distribution occurs
automatically, and
2) that if distribution does occur automatically, it should be easily
reversible, i.e. through something like factor

Is there a way to keep 4*(x-y) as 4*(x-y) instead of -4*y+4*x?

Thoughts?

~Luke


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com
To unsubscribe from this group, send email to sympy+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to