Acme-Tools
view release on metacpan or search on metacpan
t/test_pi.pl view on Meta::CPAN
my $mypi=1/$s;
printf "%9d: %30.25f %30.25f %g %5.2fs\n", $n, $mypi, $pi_bigger-$mypi, $pi_bigger-$mypi, time_fp()-$start;
}
}
sub pi_approx {
my($min,$imp)=(9e9,0); $|=1;
for my $n (1..1e7){
my $x=int($pi*$n);
print "$n\r" if $n%1000==0;
for($x..$x+1){
my $mypi=$_/$n;
my $diff=abs($pi-$mypi);
next unless $diff<$min and $imp=$min/$diff and $min=$diff and $imp>1.1;
printf "%9d / %-9d %20.15f %20.15f %g improvement: %g\n", $_, $n, $mypi, $diff, $diff, $imp;
}
}
}
sub pi_bin_old {
bigscale(1000); #hm
for my $n (1..100){
my $start=time_fp();
my $sum=0;
for my $i (map bigf($_),0..$n){
$sum += 1/16**$i * ( 4/(8*$i+1) - 2/(8*$i+4) - 1/(8*$i+5) - 1/(8*$i+6) );
}
my $mypi=$sum;
my $diff=$pi_big-$mypi;
#next unless $diff<$min and $imp=$min/$diff and $min=$diff and $imp>1.1;
printf "%9d: %30.25f %30.25f %g %5.2f\n", $n, $mypi, $diff, $diff, time_fp()-$start;
}
}
sub pi_bin { # http://www.experimentalmath.info/bbp-codes/bbp-alg.pdf
bigscale(500); #hm
my $start=time_fp();
my $mypi=0;
for my $i (map bigf($_), 0..300){
$mypi += 1/16**$i * ( 4/(8*$i+1) - 2/(8*$i+4) - 1/(8*$i+5) - 1/(8*$i+6) ); #from Ferguson's PSLQ algorithm
next if $i%10;
my $diff=$pi_big-$mypi;
printf "%9d: %30.25f %30.25f %g %5.2f\n", $i, $mypi, $diff, $diff, time_fp()-$start;
}
}
__END__
@fak https://en.wikipedia.org/wiki/Factorial
Visste du at den matematiske formelen for volumet til en pizza med tykkelse a og radius z er pi z z a?
Did you know that the volume of a pizza with thickness a and radius z is pi z z a?
wget https://gmplib.org/download/misc/gmp-chudnovsky.c
sudo apt-get install libgmpv4-dev
gcc -s -Wall -o gmp-chudnovsky gmp-chudnovsky.c -lgmp -lm
wget http://beej.us/blog/data/pi-chudnovsky-gmp/chudnovsky_c.txt; mv chudnovsky_c.txt chudnovsky.c
gcc -O2 -Wall -o chudnovsky chudnovsky.c -lgmp
time ./chudnovsky 1000 #3.141592.......... 1000 decimals in 0.004s, 10000 in 0.22s, 100000 in 42s
wget http://www.angio.net/pi/digits/pi1000000.txt
time perl -nle'print $-[0]." ".($+[0]-$-[0])." ".substr($_,$-[0],$+[0]-$-[0]) while /(\d)\1\1\1\1\1+/g' pi1000000.txt #pos of 6+ consec same decs
( run in 1.329 second using v1.01-cache-2.11-cpan-39bf76dae61 )