On Jan 31, 10:53 am, Mensanator <mensana...@aol.com> wrote: > On Jan 31, 8:05 am, Mark Dickinson <dicki...@gmail.com> wrote: > > > On Jan 31, 1:23 pm, Steve Holden <st...@holdenweb.com> wrote: > > > > Much more significant points, given the limited precision of the doubles > > > Python will be using. Could gmpy do this better, I wonder? > > > Almost certainly, if exact results are wanted! At least, GMP has > > an mpz_root function; I don't know offhand whether gmpy makes it > > accessible from Python. > > > Mark > > What am I doing wrong here? > > IDLE 2.6b1 > > >>> import timeit > >>> from gmpy import root > >>> root(4021503534212915433093809093996098953996019232,13) > (mpz(3221), 0) > >>> t1 = timeit.Timer("x = root(a,r)", "a = > >>> 4021503534212915433093809093996098953996019232; r = 13") > >>> t1.timeit() > > Traceback (most recent call last): > File "<pyshell#5>", line 1, in <module> > t1.timeit() > File "C:\Python26\lib\timeit.py", line 193, in timeit > timing = self.inner(it, self.timer) > File "<timeit-src>", line 6, in inner > NameError: global name 'root' is not defined
Never mind, I figured it out. >>> import gmpy >>> a=gmpy.mpz(4021503534212915433093809093996098953996019232) >>> r=13 >>> t1 = timeit.Timer("x = root(a,r)", "from gmpy import root; from __main__ >>> import a,r") >>> t1.timeit() 4.7018698921850728 For comparison: >>> t2 = timeit.Timer("x = n**power", "n = >>> 4021503534212915433093809093996098953996019232.; power = 1./13") >>> t2.timeit() 0.43993394115364026 -- http://mail.python.org/mailman/listinfo/python-list