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 . On Sun, Mar 4, 2012 at 10:07 AM, Aaron Meurer <[email protected]> wrote: > Exactly. This happens automatically for rational numbers, so that if > the number is a perfect square, then they will be reduced (indeed, it > will reduce any perfect square factors if the number is not too big). > sqrt() of a Float will just give you another Float, so if you want to > test that, you have to convert it to a Rational first. Normally, I > would suggest calling Rational on it to do that, but that won't work > because of issue http://code.google.com/p/sympy/issues/detail?id=2950. > > So instead, you should use nsimplify(rational=True), like > > In [58]: nsimplify(4.41, rational=True) > Out[58]: > 441 > ─── > 100 > > In [59]: sqrt(nsimplify(4.41, rational=True)) > Out[59]: > 21 > ── > 10 > > Aaron Meurer > > On Sat, Mar 3, 2012 at 9:09 PM, prateek papriwal > <[email protected]> wrote: > > we can do the following thing (talking about square roots) > > > > For integer inputs, only the square roots of the square numbers are > > rationals. So our problem boils down to find if our number is a square > > number . in this way sqrt(3) can be checked . > > If we have rational numbers as inputs (that is, a number given as the > ratio > > between two integer numbers), check that both divisor and dividend are > > perfect squares. in this way 4.41 can be checked . > > > > Finally we know that any finite floating point number is a rational > number > > .. > > On Sun, Mar 4, 2012 at 5:05 AM, Aaron Meurer <[email protected]> wrote: > >> > >> On Sat, Mar 3, 2012 at 12:17 PM, Sergiu Ivanov > >> <[email protected]> wrote: > >> > On Sat, Mar 3, 2012 at 6:29 PM, prateek papriwal > >> > <[email protected]> wrote: > >> >> yes u were right i had an old version 6.7 , now i have a new version > >> >> which > >> >> gives "NONE" for > >> >> > >> >>>>>sqrt(3).is_rational > >> >> and > >> >> > >> >>>>>sqrt(3).is_irrational > >> >> > >> >> this need to be corrected > >> > > >> > Yes, this would be highly desired, but, as Aaron has said, there is no > >> > simple general way to check the rationality of an expression. > >> > > >> > Could you please describe what you are trying to achieve? If you can > >> > narrow down your problem sufficiently well, you may be able to devise > >> > an ad-hoc way to check the rationality of an expression in your > >> > domain. > >> > > >> > Sergiu > >> > >> Problems only arise if you have transcendental numbers, or if you have > >> symbolic expressions with some assumptions on them. If you are > >> dealing with a non-symbolic algebraic number, it is always possible to > >> tell if it's rational or not. One way is to use minpoly() and see if > >> the minimal polynomial is linear or not. We don't currently do this > >> because minpoly() is too slow for non-trivial algebraic numbers (if I > >> remember correctly). > >> > >> Aaron Meurer > >> > >> -- > >> You received this message because you are subscribed to the Google > Groups > >> "sympy" 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?hl=en. > >> > > > > -- > > You received this message because you are subscribed to the Google Groups > > "sympy" 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?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "sympy" 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?hl=en. > > -- You received this message because you are subscribed to the Google Groups "sympy" 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?hl=en.
