Almkvist-Giullera formula for pi: Difference between revisions

m
→‎{{header|Perl}}: code simplifications
(Added Sidef)
m (→‎{{header|Perl}}: code simplifications)
Line 449:
use Math::AnyNum <:overload factorial>;
 
sub almkvist_giullera_integral {
my $Precision = 70;
 
sub Integral {
my($n) = @_;
int (2**532 * factorial(614*$n) * (53238*$n**2 + 126*$n9) + 9) * factorial(6*$n)) / (3*factorial($n)**6);
}
 
sub A_Galmkvist_giullera {
my($n) = @_;
Integralalmkvist_giullera_integral($n) / (10**(6*$n + 3));
}
 
sub Pialmkvist_giullera_pi {
my ($nprec) = @_;
 
local $Math::AnyNum::PREC = 5 * $Precision;
statelocal $AGcacheMath::AnyNum::PREC = 04*($prec+1);
 
$AGcache += A_G($n);
my $target = Pi( my $Nthsum = 0);
Math::AnyNum::pow($AGcache,-0.5)->round(-$Precision)->stringify;
my $target = $next'';
 
for (my $n = 0; ; ++$n) {
$sum += almkvist_giullera($n);
my $curr = ($sum**-.5)->as_dec;
last if ( return $nexttarget =if Pi(++$Nth))curr eq $target);
$target = $curr;
}
}
 
say 'First 10 integer portions: ';
say "$_ " . Integralalmkvist_giullera_integral($_) for 0..9;
 
my $nextprecision = ''70;
my $target = Pi(my $Nth = 0);
while () {
last if ($next = Pi(++$Nth)) eq $target;
$target = $next;
}
 
printf ("π to $Precision%s decimal places is:\n$target%s\n";</lang>,
$precision, almkvist_giullera_pi($precision));</lang>
{{out}}
<pre>First 10 integer portions:
2,747

edits