At https://github.com/sympy/sympy/wiki/automatic-simplification I listed four rules of when automatic simplification should happen, and it sounds like this one breaks the third rule (not to mention probably the fourth). So to me, that's good enough reason to not do it.
Aaron Meurer On Thu, May 2, 2013 at 11:59 PM, mario <mario.pern...@gmail.com> wrote: > A problem with automatic canonicalization is that it would slow down the > construction > of big TensMul objects; > constructing the product of ``n`` tensors would require ``n - 1`` > canonicalizations instead > of one. To avoid this, the automatic canonicalization is delayed to when > TensMul objects > are summed. > > > On Friday, May 3, 2013 1:02:16 AM UTC+2, Aaron Meurer wrote: > >> This is very similar to the automatic evaluation question that comes >> up all the time. If you make things compare equal, then it becomes >> impossible to distinguish them. As such, you should reasonably expect >> any instance of one to be replaced with another by just about >> anything. >> >> A common way around this is to automatically canonicalize things. >> Another (probably better) way is to just write your algorithms so that >> they are agnostic of structural differences (in other words, >> canonicalize at the top of your algorithms instead of in your >> constructors). >> >> Aaron Meurer >> >> On Thu, May 2, 2013 at 1:43 PM, Matthew Rocklin <mroc...@gmail.com> >> wrote: >> > I remember being told to never override __eq__. In general I support >> this >> > policy. >> > >> > I often implement .equals when I need more mathematical equality >> checking. >> > Perhaps renaming __eq__ to .equals would be better than deletion. >> > >> > >> > On Thu, May 2, 2013 at 2:39 PM, Stefan Krastanov >> > <krastano...@gmail.com> wrote: >> >> >> >> I have found a few pieces of code where `__eq__` is extended to check >> >> for more than structural equality and this causes some routines to >> >> fail. Am I right to revert __eq__ to checking only for structural >> >> equality (and fixing related tests)? >> >> >> >> The code in question is `tensor.py` line 1318. >> >> >> >> -- >> >> You received this message because you are subscribed to the Google >> Groups >> >> "sympy" group. >> >> To unsubscribe from this group and stop receiving emails from it, send >> an >> >> email to sympy+un...@**googlegroups.com. >> >> To post to this group, send email to sy...@googlegroups.com. >> >> Visit this group at >> >> http://groups.google.com/**group/sympy?hl=en-US<http://groups.google.com/group/sympy?hl=en-US>. >> >> >> For more options, visit >> >> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>. >> >> >> >> >> >> > >> > -- >> > You received this message because you are subscribed to the Google >> Groups >> > "sympy" group. >> > To unsubscribe from this group and stop receiving emails from it, send >> an >> > email to sympy+un...@**googlegroups.com. >> > To post to this group, send email to sy...@googlegroups.com. >> > Visit this group at >> > http://groups.google.com/**group/sympy?hl=en-US<http://groups.google.com/group/sympy?hl=en-US>. >> >> > For more options, visit >> > https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out>. >> >> > >> > >> > -- > You received this message because you are subscribed to the Google Groups > "sympy" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sympy+unsubscr...@googlegroups.com. > To post to this group, send email to sympy@googlegroups.com. > Visit this group at http://groups.google.com/group/sympy?hl=en-US. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at http://groups.google.com/group/sympy?hl=en-US. For more options, visit https://groups.google.com/groups/opt_out.