On May 4, 2010, at 5:20 PM, Ondrej Certik wrote:

> On Tue, May 4, 2010 at 4:15 PM, Bastian Weber
> <bastian.we...@gmx-topmail.de> wrote:
>> 
>>> 
>>> One undocumented function is count_ops:
>>> 
>>> In [1]: e = x**2+y+z
>>> 
>>> In [2]: e.count_ops(False)
>>> Out[2]: 3
>>> 
>>> In [3]: e = x**2+y+z+sin(z)
>>> 
>>> In [4]: e.count_ops(False)
>>> Out[4]: 5
>>> 
>>> In [5]: e = x**2+y+z+sin(z)**2
>>> 
>>> In [6]: e.count_ops(False)
>>> Out[6]: 6
>> 
>> 
>> 
>> Thats very cool.
>> Its what I was looking for.
>> 
>> 
>>> 
>>> See also the tests in sympy/core/tests/test_count_ops.py
>>> 
>>> I think it's similar to your function too. It'd be cool to maybe write
>>> some documentation and example doctests for this, and/or integrate it
>>> with your depth() function.
>> 
>> cout_ops(False) does almost exactly the same as my count_branches from
>> my last mail. (I should check for new mail before sending a mail to the
>> list...)
>> 
>> 
>> The main difference is that count_ops seems to be faster.
>> 
>> I dont see any useful possibility to integrate the depth function with
>> count_ops and I doubt that anybody might want to use the former.
>> 
>> Concerning the docs / doctests for count_ops I do not understand the
>> current situation:
>> 
>> 
>> in ipython
>> 
>> Symbol.count_ops.__doc__ == None
>> 
>> evaluates to True
>> 
>> but on the other hand, if I go to the source file, I can read the following:
>> 
>> """ Return the number of operations in expressions.
>> 
>>        Examples:
>>        >>> from sympy.abc import a, b, x
>>        >>> from sympy import sin
>>        >>> (1+a+b**2).count_ops()
>>        POW + 2*ADD
>>        >>> (sin(x)*x+sin(x)**2).count_ops()
>>        2 + ADD + MUL + POW
>> 
>>        """
>> 
>> 
>> __version__ = '0.7.0-git'
>> 
>> I am confused about this.
> 
> 
> Ah, I see. It's because it's only documented in Basic, but you use it
> for Symbol.
> 
> The count_ops in all classes except Basic should be renamed to _count_ops.
> 
> The docstring in Basic should also include the symbolic=False option
> (that should probably be the default).

Symbol should be inheriting the method from Basic though, and it's docstring.  
For example, 

In [8]: Symbol.expand.__doc__
Out[8]: 
                                                                  
                    Expand an expression using hints.             
                                                                  
        See the docstring in function.expand for more information.
                                                                  
In [11]: Expr.expand.__doc__ is Symbol.expand.__doc__
Out[11]: True

Maybe it is because it comes from Basic and not Expr.

Aaron Meurer
> 
> Ondrej
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sympy" group.
> To post to this group, send email to sy...@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 sy...@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