On Sun, Mar 4, 2012 at 10:39 AM, prateek papriwal <papriwalprat...@gmail.com
> wrote:

> so somehow we need to merge nsimplify() method into sqrt() method .
>
> in that case when we call sqrt(4.41)
>
> automatically sqrt(nsimplify(4.41,rational=True)) will be called .
>
>
>
Since 4.41 is a Float, we don't assume that it is an exact number so the
 conversion happens (as Aaron is noted) upon instantiation of the sqrt and
2.1 is returned. If you know the 4.41 is exact you can enter it as a string
to Rational:

    >>> sqrt(Rational('4.41'))
    21/10

Also, it seems the following could be added to Pow:

    def _eval_is_rational(self):
        p = self.func(*self.as_base_exp()) # in case it's unevaluated
        if not p.is_Pow:
            return p.is_rational
        b, e = p.as_base_exp()
        if e.is_Rational and not e.is_Integer and b.is_Rational:
            return False

This would allow False to be returned for sqrt(3).is_rational (or True for
is_irrational).

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