> How to find the nearest integer (+ve or -ve) of a rational number (P/Q)
> where P,Q are very large integers?

You could use the .round method of rationals.

sage: q = 17+1/2+1/11**10000000
sage: RR(q.numerator()), RR(q.denominator())
(2.48685403212345e10413928, 1.42105944692768e10413927)
sage: q.round()
18

sage: q = 13**(10**7)+1/2+1/11**(10**7)
sage: RR(q.numerator()), RR(q.denominator())
(4.73893349282680e21553360, 1.42105944692768e10413927)
sage: z = q.round()
sage: factor(z-1)
13^10000000


sage: help(q.round)
round(...)
    File: sage/rings/rational.pyx (starting at line 2858)

    Returns the nearest integer to self, rounding away from 0 by
    default, for consistency with the builtin Python round.

    INPUT:


    -  ``self`` - a rational number

    -  ``mode`` - a rounding mode for half integers:

       - 'toward' rounds toward zero
       - 'away' (default) rounds away from zero
       - 'up' rounds up
       - 'down' rounds down
       - 'even' rounds toward the even integer
       - 'odd' rounds toward the odd integer


Doug

-- 
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URL: http://www.sagemath.org

Reply via email to