Rationals?

Nick Craig-Wood nick at craig-wood.com
Thu Nov 18 05:30:22 EST 2004


Tim Peters <tim.peters at gmail.com> wrote:
>  PS:  If you simply want to *use* a high-powered rational type,
>  download gmpy and be happy tonight.

I was just about to chip in with that!

  http://gmpy.sourceforge.net/

gmpy is really good (I've used it for some numerical experiments).
Its very fast and very easy to use and has very good infinite
precision integers (mpz, rationals mpq and floats mpf)

However it still seems to be in alpha after its last release more than
one year ago?

>>> import gmpy
>>> a = gmpy.mpq(1)
>>> a / 3
mpq(1,3)
>>> a = gmpy.mpq(22, 7)
>>> a
mpq(22,7)
>>> float(a)
3.1428571428571428
>>> a * 113/355  
mpq(2486,2485)
>>> gmpy.sqrt(a)
mpz(1)
>>> gmpy.fsqrt(a)
mpf('1.77281052085583665659e0')
>>> gmpy.mpf(a, 100)
mpf('3.142857142857142857142857142857142857141e0',100)
>>> def e(digits = 100, zero = 0.0):
...     sum = zero
...     i = zero + 1
...     n = 1
...     epsilon = (zero + 10) ** -digits
...     while i > epsilon:
...         sum += i
...         i = i / n
...         n += 1
...     return sum
... 
>>> 
>>> print e(25, 0.0)
2.71828182846
>>> print e(25, gmpy.mpf(0, 100))
2.718281828459045235360287404308329607628
>>> print e(25, gmpy.mpq(0))
337310723185584470837549/124089680346647887872000

-- 
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick



More information about the Python-list mailing list