On May 22, 2011, at 12:12 PM, Mateusz Paprocki wrote:

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

No, I mean is there a way for literally "x*y*z" to call (essentially) 
reduce(operator.mul, [x, y, z])?

But like you said, it is O(n**2), so I guess it doesn't matter (unless you can 
also do it O(n)).  

Aaron Meurer

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

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