Comment #33 on issue 2607 by [email protected]: as_numer_denom() is too slow
http://code.google.com/p/sympy/issues/detail?id=2607

The unevaluated Mul is a very nice way to go unless you think that `Mul(2,x, evaluate=False)/2` should not be `x`. If you don't like the final touching iwth `+0` of the denominator you can `Mul(*Mul.make_args(den))` or just return the unevaluated Mul. Those changes (as_numer_denom4b) and my best shot at the expanded results with collection of common denominators and processing of Integer denominators (as_numer_denom5) are in the "and" branch of mine.

    >>> from sympy.abc import *
    >>> from sympy import *
    >>> a=x/2 + 1/(5*(x + 1))
    >>> a.as_numer_denom()
    (x*(5*x + 5) + 2, 10*x + 10)
    >>> a.as_numer_denom4()
    (x*(10*x + 10)/2 + (10*x + 10)/(5*x + 5), 10*x + 10)
    >>> a.as_numer_denom4b()
    (x*(5*x + 5) + 2, 2*(5*x + 5))
    >>> a.as_numer_denom5()
    (x*(5*x + 5) + 2, 10*x + 10)

    >>> a=(x/2+1/(x+1)+2)
    >>> a.as_numer_denom()
    (x*(x + 1) + 4*x + 6, 2*x + 2)
    >>> a.as_numer_denom4()
    (x*(2*x + 2)/2 + 4*x + 4 + (2*x + 2)/(x + 1), 2*x + 2)
    >>> a.as_numer_denom4b()
    (x*(x + 1) + 4*x + 6, 2*(x + 1))
    >>> a.as_numer_denom5()
    (x*(x + 1) + 4*x + 6, 2*x + 2)
    >>>


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

Reply via email to