Almkvist-Giullera formula for pi: Difference between revisions
Content added Content deleted
(Added Sidef) |
m (→{{header|Perl}}: code simplifications) |
||
Line 449: | Line 449: | ||
use Math::AnyNum <:overload factorial>; |
use Math::AnyNum <:overload factorial>; |
||
sub almkvist_giullera_integral { |
|||
my $Precision = 70; |
|||
sub Integral { |
|||
my($n) = @_; |
my($n) = @_; |
||
(32 * (14*$n * (38*$n + 9) + 9) * factorial(6*$n)) / (3*factorial($n)**6); |
|||
} |
} |
||
sub |
sub almkvist_giullera { |
||
my($n) = @_; |
my($n) = @_; |
||
almkvist_giullera_integral($n) / (10**(6*$n + 3)); |
|||
} |
} |
||
sub |
sub almkvist_giullera_pi { |
||
my($ |
my ($prec) = @_; |
||
local $Math::AnyNum::PREC = 5 * $Precision; |
|||
local $Math::AnyNum::PREC = 4*($prec+1); |
|||
$AGcache += A_G($n); |
|||
⚫ | |||
Math::AnyNum::pow($AGcache,-0.5)->round(-$Precision)->stringify; |
|||
⚫ | |||
for (my $n = 0; ; ++$n) { |
|||
$sum += almkvist_giullera($n); |
|||
my $curr = ($sum**-.5)->as_dec; |
|||
⚫ | |||
$target = $curr; |
|||
} |
|||
} |
} |
||
say 'First 10 integer portions: '; |
say 'First 10 integer portions: '; |
||
say "$_ " . |
say "$_ " . almkvist_giullera_integral($_) for 0..9; |
||
my $ |
my $precision = 70; |
||
⚫ | |||
while () { |
|||
⚫ | |||
⚫ | |||
} |
|||
printf |
printf("π to %s decimal places is:\n%s\n", |
||
$precision, almkvist_giullera_pi($precision));</lang> |
|||
{{out}} |
{{out}} |
||
<pre>First 10 integer portions: |
<pre>First 10 integer portions: |