[Python-modules-team] Bug#530381: python-mpmath: strangely high	accuracy in computing pi
    Sanjoy Mahajan 
    sanjoy at MIT.EDU
       
    Sun May 24 14:23:27 UTC 2009
    
    
  
Package: python-mpmath
Version: 0.11-2
Severity: normal
The following Python code uses mpmath to implement Salamin's algorithm
for computing pi (using arithmetic and geometric means).  The number
of digits of accuracy should roughly double with each iteration, and
it does so if mp.dps=1000 (the number of digits is printed at the end
of each swing through the loop).  
However, if mp.dps=4000, then the number of digits doubles for a few
iterations, then goes to infinity:
    3.0
    8.1
   18.7
   40.3
   83.6
    inf
    inf
    inf
Somehow the estimate became exactly equal to pi.  It seems strange to
me and I wonder if it's a bug in one of the math functions like sqrt
or whether it's a feature.  Or perhaps mpmath computes pi using the
same algorithm?
from mpmath import *
mp.dps = 4000
# a sequence is successive arithmetic means; 
# g sequence is successive geometric means
a, b = 1, sqrt(0.5)
n = 1
sum = 0
factor = 2
while n < mp.dps-10:
    n = -log(a*a-b*b)/log(10)
    a,b = (a+b)/2, sqrt(a*b)
    factor *= 2
    sum += factor * (a*a-b*b)
    M = (a+b)/2
    estimate = 4*M*M/(1-sum)
    digits = -log(abs(estimate-pi))/log(10)
    print "%7.1f" % digits
-- System Information:
Debian Release: squeeze/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.29-2-686 (SMP w/2 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=en_US.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Versions of packages python-mpmath depends on:
ii  python-support                1.0.3      automated rebuilding support for P
python-mpmath recommends no packages.
Versions of packages python-mpmath suggests:
ii  python-gmpy                   1.03.ds-1  Interfaces GMP to Python for fast,
ii  python-matplotlib             0.98.3-5   Python based plotting system in a 
ii  python-mpmath-doc             0.11-2     library for arbitrary-precision fl
-- no debconf information
    
    
More information about the Python-modules-team
mailing list