On Fri, Apr 11, 2008 at 3:49 PM, Jason Grout <[EMAIL PROTECTED]> wrote: > > William Stein wrote: > > On Fri, Apr 11, 2008 at 10:43 AM, Ryan Hinton <[EMAIL PROTECTED]> wrote: > >> Sorry, I meant to. One problem is that the Sage pre-parsing results > >> in different behavior than I am seeing, so pasting code into a Sage > >> session will not exhibit the problem I am seeing. > > > > Include > > > > sage: preparse(False) > > > > at the top of the example to turn off the Sage preparser. > > Alternatively, you can do Integer=int; RealNumber=float > > to turn off just bits of it. > > > > It looks like below the issue is that you want to use > > the Python builtin round instead of Sage's round. > > That Sage uses it's round instead the builtin one > > by default has nothing to do with the preparse. It's > > just because we import our own round in > > > > from sage.all import * > > > > We do that because the semantics of Python's builtin > > round aren't optimal for Sage. > > > > > Ryan, > > If you use Sage's round command: > > from sage.all import round > > or > > from sage.misc.functional import round > > then the example seems to work just fine: > > sage: vector([round(frac*length) for frac in fracs_list]) > (5, 3, 2) > > > If I wanted to be sure that I had an integer vector, I could specify the > parent explicitly, just like with matrices: > > sage: vector(ZZ,[round(frac*length) for frac in fracs_list]) > (5, 3, 2) > > > That said, William, is there a reason why this doesn't work? This is > what is necessitating the two type conversions above. > > sage: Integer(float(2)) > > --------------------------------------------------------------------------- > <type 'exceptions.TypeError'> Traceback (most recent call last) > > /home/grout/<ipython console> in <module>() > > /home/grout/integer.pyx in sage.rings.integer.Integer.__init__() > > <type 'exceptions.TypeError'>: unable to coerce element to an integer > > > sage: Integer(RDF(2)) > > --------------------------------------------------------------------------- > <type 'exceptions.TypeError'> Traceback (most recent call last) > > /home/grout/<ipython console> in <module>() > > /home/grout/integer.pyx in sage.rings.integer.Integer.__init__() > > <type 'exceptions.TypeError'>: unable to coerce element to an integer > > > I guess I would think it was a design decision to not convert floating > points to ints automatically. However, the following does work: > > sage: Integer(RR(2)) > 2 > > > This seems inconsistent.
Yep. I think it's just a NotImplementedError. Please implement it and post a patch. Make sure that it only succeeds if Integer(k(a)) == a and otherwise fails. I.e., Integer(k(a)) should *not* truncate k(a). William --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-support URLs: http://www.sagemath.org -~----------~----~----~----~------~----~------~--~---