FC2ブログ

# ベルヌーイ数 Bernoulli Number
# 引数 整数 ($n)
# 戻り値 ベルヌーイ数 ($BernoulliNumber)
sub BERNOULLINUMBER{
my ($n) = @_;
my $BernoulliNumber = 1;
my @Bernoulli = (1);
my $Combination = 0;
my $BinomialCoefficient = 0;
my $N = int($n);
my $Sum = 0;

# 整数の確認
if($N < 0){
return 0;
}

# 奇数番目のベルヌーイ数は1番目を除けば全て0
if(($N != 1) && (($N % 2) == 1)){
# ベルヌーイ数 Bernoulli Number
$BernoulliNumber = 0;

return $BernoulliNumber;
}

# 計算
for(my $i = 1; $i <= $N; $i++){
# 奇数番目のベルヌーイ数は1番目を除けば全て0
if(($i != 1) && (($i % 2) == 1)){
$Bernoulli[$i] = 0;
next;
}

# 二項係数 Binomial Coefficient
$Combination = ($i + 1);
$Sum = (1 * $Bernoulli[0]);

for(my $j = 1; $j <= ($i - 1); $j++){
# 二項係数 Binomial Coefficient
$Combination = $Combination / $j;
$BinomialCoefficient = $Combination;
$Combination = $Combination * (($i + 1) - $j);

$Sum += $BinomialCoefficient * $Bernoulli[$j];
}

$Bernoulli[$i] = -(1 / ($i + 1)) * $Sum;
}

# ベルヌーイ数 Bernoulli Number
$BernoulliNumber = $Bernoulli[$N];

return $BernoulliNumber;
}


参考URL
ベルヌーイ数 - Wikipedia
ベルヌーイ数 - 高精度計算サイト

メモ
use bigint; ではなく use bignum;
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

Author:雨宮
Firefoxを使用しているので気づかなかったけど、IE6でソースコードを上手くコピーできない

5/3
携帯用ならIE6でもソースコードをコピーできる
携帯用

検索フォーム


あわせて読みたいブログパーツ
一寸先は闇 RSS