William Stein wrote: > 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). >
Is making an _integer_ method in the RDF class the right method to write? Also, round(RR(3.0)) returns an Integer...should RDF behave the same way? (currently round(RDF(3.0)) returns an RDF). Jason --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---