Ошибка сегментации произошла во время вычисления пи с использованием GMP на Perl - PullRequest
1 голос
/ 06 апреля 2019

Я пытаюсь вычислить число пи с помощью GMP на Perl, однако мой код закончился ошибкой сегментации. Относительно того, почему это закончилось ошибкой сегментации, которую я хотел бы знать.

Я пытался выделить причину. Похоже, ошибка сегментации произошла, когда был выведен результат вычисления для числа пи. Конкретный код ниже.

#!/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;
}
...