This is a good workaround, but the original problem can be traced to the function sage.symbolic.expression.Expression.__int__
def __int__(self): #FIXME: can we do better? return int(self.n(prec=100)) Presumably you could adaptively estimate to higher precision until your error interval included only one integer... David On Mon, Oct 25, 2010 at 12:13, John Cremona <john.crem...@gmail.com> wrote: > When you do sqrt(2^m) when m is odd, say m=2*k+1, the returned value > is symbolically 2*k * sqrt(2): > > sage: sqrt(2^101) > 1125899906842624*sqrt(2) > > Now using Integer() to "round" that will evaluate sqrt(2) > approximately to standard precision, which is not enough. Instead, > use the isqrt() method for Integers: > > sage: a = 2^94533 > sage: b = a.isqrt() > sage: a > b^2 > True > sage: (b+1)^2 > a > True > > John > > On Mon, Oct 25, 2010 at 4:50 PM, Francois Maltey <fmal...@nerim.fr> wrote: > > Georg wrote : > >> > >> while calculating the integer part of square roots I realized that > >> sqrt() returns wrong results for large inputs (although the sqrt() > >> command itself accepts "bignum" values). > >> example: int(sqrt(2^94533)) > >> > > > > int isn't a "mathematical" Sage type, but Integer is a Sage type. > > And Integer (sqrt(2^1234567)) fails > > > > But floor over Integer seems fine : > > > > n=10001 ; res=floor(sqrt(2^n)) ; sign(res^2-2^n) ; sign((res+1)^2-2^n) > > I get -1 and 1. > > > > but it fails around n=30000 or 40000. > > > > You may also get a precise numerical approximation by the method > > _____.n(digits=....). > > By example : sqrt(2).n(digits=10000). But in this case you must compute > "by > > pen" the digit value. > > > > A very similar exercice : Is the number of digits of 123^456^789 even or > odd > > ? > > Of course you must read 123^(456^789), not (123^456)^789 ! > > > > I hope this help you... > > > > F. (in France) > > > > -- > > To post to this group, send an email to sage-devel@googlegroups.com > > To unsubscribe from this group, send an email to > > sage-devel+unsubscr...@googlegroups.com<sage-devel%2bunsubscr...@googlegroups.com> > > For more options, visit this group at > > http://groups.google.com/group/sage-devel > > URL: http://www.sagemath.org > > > > -- > To post to this group, send an email to sage-devel@googlegroups.com > To unsubscribe from this group, send an email to > sage-devel+unsubscr...@googlegroups.com<sage-devel%2bunsubscr...@googlegroups.com> > For more options, visit this group at > http://groups.google.com/group/sage-devel > URL: http://www.sagemath.org > -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org