[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

RE: Re: [FWP] algorithm to calculate pi



sorry.. i did something wrong.. if i increased loop counter and
div_scale.. your program works correct(even though takes longer)..
but this simpfied one starts getting inaccurate after 860th digits:)

guess we still need fairly amount of Math::BigFloat loaded.. which
is actually i supposed:)

>Date: Thu, 29 Jun 2000 01:14:07 -0700
>From: "Perl lover" <perl@antionline.org>
>To: mjassels@cs.concordia.ca, fwp@technofile.org
>Subject: RE: Re: [FWP] algorithm to calculate pi
>Reply-To: "Perl lover" <perl@antionline.org>
>
>please run the following instead:
>
>note i changed div_scale to 1000 to get more numbers..it runs
>much faster.. and why it's even more accurate??!! (till 560th
>digits).. if i change div_scale to 1000 in your code.. i got
>only 400 accurate digits... i wonder why...
>
>
>use Math::BigFloat; 
>                      $Math::BigFloat::div_scale = 1000; 
>                      my $i=0; 
>                      my $p16 = new Math::BigFloat 1; 
>                      my $pi = new Math::BigFloat 0; 
>
>                      for(0..1000){ 
>                      
>
>my $t1 = ($i+4)*($i+5)*($i+6)*4-($i+1)*($i+5)*($i+6)*2-($i+1)*($i+4)*($i+6)-($i+1)*($i+4)*($i+5); 
>                      my $t2 = ($i+1)*($i+4)*($i+5)*($i+6); 
>                      $pi += ($p16*$t1)/$t2; 
>                      $i  += 8; 
>                      $p16/= 16; 
>                      } 
>
>
>
>
>
>
>>Oops.  I guess we need more BigFloats.  Here's one that works for
>>280 digits, although it takes about 20 seconds to run on a Sun E420R:
>>
>>     use Math::BigFloat;
>>     $Math::BigFloat::div_scale = 281;
>>     my $i=0;
>>     my @p16 = ();
>>     $p16[0] = new Math::BigFloat 1;
>>     my $pi = new Math::BigFloat 0;
>>
>>     for(0..280){
>>        my $t1=new Math::BigFloat 4;
>>        my $t2=new Math::BigFloat 2;
>>        my $t3=new Math::BigFloat 1;
>>        my $t4=new Math::BigFloat 1;
>>        $t1 /= $i+1;
>>        $t2 /= $i+4;
>>        $t3 /= $i+5;
>>        $t4 /= $i+6;
>>        $pi += $p16[$_]*($t1-$t2-$t3-$t4);
>>        $i  += 8;
>>        $p16[$_+1] = $p16[$_]/16;
>>     }
>>
>>Michael
>>
>>==== Want to unsubscribe from Fun With Perl?  Well, if you insist...
>>==== Send email to <fwp-request@technofile.org> with message _body_
>>====   unsubscribe
>
>
>
>
>------------------------------------------------------------
>Email account furnished courtesy of AntiOnline - http://www.AntiOnline.com
>AntiOnline - The Internet's Information Security Super Center!
>
>
>
>==== Want to unsubscribe from Fun With Perl?  Well, if you insist...
>==== Send email to <fwp-request@technofile.org> with message _body_
>====   unsubscribe




------------------------------------------------------------
Email account furnished courtesy of AntiOnline - http://www.AntiOnline.com
AntiOnline - The Internet's Information Security Super Center!



==== Want to unsubscribe from Fun With Perl?  Well, if you insist...
==== Send email to <fwp-request@technofile.org> with message _body_
====   unsubscribe