On Mon, Sep 5, 2011 at 8:44 AM, Dima Pasechnik <dimp...@gmail.com> wrote: > > > On Monday, 5 September 2011 22:41:50 UTC+8, rjf wrote: >> >> is 4^(-2) (use various kinds of integers) integer rational float? >> ditto for >> 5^(-2) ? >> >> Seems to me that the presence of python integers is an inconsistency >> waiting to appear, > > as brilliantly uncovered by our 2nd year undergrads :) > With the patch I propose one has > sage: type(int(5)^-2) > <type 'sage.rings.rational.Rational'> > sage: type(int(5)^int(-2)) > <type 'float'> > with the idea that if you want to stay Pythonic, you can (the 2nd example), > but otherwise you get promoted to the better situation (the 1st example), > when everything is exact. > Presently, int()^whatever stays Pythonic, no matter it causes a loss of > precision, or not. > One gets bizzare things like: > sage: def f(x): return x^-3 > ....: > sage: f(int(3)) > 0.037037037037037035 > sage: var('x') > x > sage: p(x)=x^-3 > sage: p(int(3)) > 1/27 > i.e. symbolic functions and the procedures behave drastically differently, > etc...
This is what Sage *should* do, IMHO. > Certain purists argue that I am wrong, and that the loss of precision must > be preferred... These "purists" are usually actually "applied-ists", and for numerical computation they are often "right". When I'm doing lots of numerical computation (which I do actually do sometimes), I tend to agree, and set the relevant modes in Sage. That said, for consistency with the rest of Sage, e.g., that int(1) + Integer(2) is an Integer, we should have int(3)^Integer(2) be an Integer. > >> >> and >> the only proper use of python ints is as a sage integer which happens >> to be, at the moment, >> small in magnitude. >> Lisp does this right, with fixnums automatically promoted to bignums >> if they get too big. >> Coercion from rational to integer happens if the rational has a >> denominator of 1. >> There are lots more of these, e.g complex with imag part zero etc. >> Do you want >> these all to be equal.... >> 1+0*i, 1/1, 1, int(1)? 1.0 1.0d0? maybe. >> RJF >> >> On Sep 5, 6:52 am, Dima Pasechnik <dim...@gmail.com> wrote: >> > this is now #11779 > > -- > 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 > -- William Stein Professor of Mathematics University of Washington http://wstein.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