learnpython.org - an online interactive Python tutorial

harrismh777 harrismh777 at charter.net
Mon Apr 25 02:14:24 EDT 2011

Dave Angel wrote:
>> time echo "scale = 1010; 16 * a(1/5) - 4 * a(1/239)" |bc -lq

> Wouldn't it be shorter to say:
> time echo "scale = 1010;  4 * a(1)" |bc -lq

Well, you can check it out by doing the math... (its fun...)

...  you will notice that 'time' is called first, which on *nix systems 
clocks the processing, breaking out the system and user times... right?

... so try these 10,000 comparisons on your *nix system:

     time echo "scale = 10010; 16 * a(1/5) - 4 * a(1/239)" |bc -lq

     time echo "scale = 10010;  4 * a(1)" |bc -lq

(those will take a few minutes, if your processor is running 2-3Ghz...)

... then try these 100,000 runs:

     time echo "scale = 100010; 16 * a(1/5) - 4 * a(1/239)" |bc -lq

     time echo "scale = 100010;  4 * a(1)" |bc -lq

(Those will take some time, probably less than 20 - 30 minutes... )

After your time comparisons, tell me whether you want to use a(1)*4 ??

Leonard Euler came up with the formula I'm using here... and used it 
himself for paper 'n pencil arithmetic... because the arctan(n) infinite 
series converges much quicker (by orders of magnitude) for values of (n) 
< 0.  (the smaller the (n) the better)

We can make the entire function run even faster by using smp and 
splitting the  'a(1/5)' and  'a(1/239)' across two cores, having the 
arctan series' running in parallel. This is important if your 'big num' 
is going to be hundreds of thousands or millions of places. On my baby 
Beowulf cluster I have played a bit with running this on two separate 
systems and then bringing the result together in the end... fun for 
playtime... interesting to see how many digits (in how much time) can be 
achieved *without* using a super-computer....

You can also try these formula for comparison sake:

     PI  =  20 * a(1/7) + 8 * a(3/79)
     PI  =  8 * a(1/3) + 4 * a(1/7)
     PI  =  24 * a(1/8) + 8 * a(1/57) + 4 * a(1/239)

Happy Easter,  and have a slice of pie on me....   :)

kind regards,
m harris

More information about the Python-list mailing list