我正在尝试在Perl上使用GMP计算pi,但是我的代码以分段错误结尾。至于为什么以细分错误结束,我想知道。
我试图找出原因。当输出pi的计算结果时,出现分段错误。具体代码如下。
#!/usr/bin/perl
use strict;
use warnings;
use GMP::Mpf qw(:all);
my $n = 100000;
my $i = 1000000;
my $cnv = sub{return mpf(shift, $i);};
my $pi = $cnv->(4.0) * ($cnv->(4.0) * arctan($cnv->(1/5)) - arctan($cnv->(1/239)));
print $pi . "\n";
sub arctan{
my $x = $cnv->(shift);
my $at = 0;
$at += (($_-1)%2==0?1:-1)*($cnv->(1.0)/$cnv->(2*$_ - 1))*$x**(2*$_-1) for (1 .. $n);
return $at;
}