Hi,

On 22 May 2011 18:17, Aaron S. Meurer <asmeu...@gmail.com> wrote:

> Is it possible to implement x*y*z as reduce(operator.mul, [x, y, z])?
>

It works:

In [2]: import operator

In [3]: reduce(operator.mul, [x, y, z])
Out[3]: x⋅y⋅z

In [4]: type(_)
Out[4]: <class 'sympy.core.mul.Mul'>

but I wouldn't use it on large examples because it takes O(n**2) steps to
canonicalize the inputs (similar problem with sum([x,y,z]), we have even an
issue open for this).


>
> Aaron Meurer
>
>
>
> On May 21, 2011, at 9:11 PM, Andy Ray Terrel <andy.ter...@gmail.com>
> wrote:
>
>  My experience with developing languages in Ignition, is largely the
>> same as what Brian outlined.  Another solution though is to instead of
>> doing much of the Mul(args) in the core, to do reduce(operator.mul,
>> args).  Since things get expanded into Mul objects they don't hit my
>> own mul objects.  Right now I have to do ugly hack that fix things up
>> after the fact.
>>
>> -- Andy
>>
>> On Sun, Jul 25, 2010 at 1:04 PM, Brian Granger <elliso...@gmail.com>
>> wrote:
>>
>>>
>>>
>>> On Sat, Jul 24, 2010 at 5:14 PM, Ronan Lamy <ronan.l...@gmail.com>
>>> wrote:
>>>
>>>>
>>>> Le samedi 24 juillet 2010 à 13:10 -0700, Brian Granger a écrit :
>>>>
>>>>> I written tests for this now.
>>>>>
>>>>>
>>>>> Brian
>>>>>
>>>>> On Sat, Jul 24, 2010 at 10:07 AM, Brian Granger <elliso...@gmail.com>
>>>>> wrote:
>>>>>        Here is an addition patch that adds this capability to all
>>>>>        binary special methods in Expr:
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> http://github.com/ellisonbg/sympy/commit/116acd6ef2bde6d0d0aa8c2f2ec1f380abbabab1
>>>>>
>>>>>
>>>>>        The performance penalty is still around 1%.  If there is
>>>>>        support for this approach, I would like to merge it to trunk
>>>>>        soon as this issue is holding up the quantum stuff.  Also I
>>>>>        was thinking that in the long run this could improve
>>>>>        performance.  Here is the idea.  Currently, all of the basic
>>>>>        operation classes (Mul, Add, Pow) have to have custom logic to
>>>>>        non commutative entities.  With the new priority based binary
>>>>>        operations, we could implement an NCMul, and NCPow classes
>>>>>        that have all of that logic.  The result is that the work Mul
>>>>>        and Pow have to do decreases.  It would also be much simpler.
>>>>>
>>>>
>>>> I'm not sure this is the best design, but it's better than the current
>>>> situation, so +1 on the idea. Two remarks though:
>>>>
>>>
>>> Any other ideas of different approaches?  I followed this one because it
>>> has
>>> been well tested in numpy.
>>>
>>>
>>>> * Since the whole point of this is to untie binary operators from Expr,
>>>> the mechanism (i.e. call_other()) shouldn't be implemented in expr.py.
>>>>
>>>
>>> OK
>>>
>>>
>>>> * The repetitiveness of the code should be abstracted away in a
>>>> decorator.
>>>>
>>>>
>>> I was thinking that as well.  This is especially true because people who
>>> want to define their won special methods that respect the priority will
>>> need
>>> to use the decorator.
>>> Cheers,
>>> Brian
>>>
>>>
>>>>
>>>> --
>>>> 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.
>>>>
>>>>
>>>
>>>
>>> --
>>> Brian E. Granger, Ph.D.
>>> Assistant Professor of Physics
>>> Cal Poly State University, San Luis Obispo
>>> bgran...@calpoly.edu
>>> elliso...@gmail.com
>>>
>>> --
>>> 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.
>>>
>>>
>> --
>> 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.
>>
>>
> --
> 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.
>
>
Mateusz

-- 
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