FC2ブログ

# ディガンマ関数(近似) Digamma Function Approximation
# 引数 値 ($x)
# 戻り値 ディガンマ関数(近似) ($DigammaFunction)
sub DIGGAMMAFUNCTION{
my ($x) = @_;
my $DigammaFunction = 0;
my @Bernoulli = ((1 / 12), (1 / 120), (1 / 252), (1 / 240), (5 / 660), (691 / 32760), (1 / 12), (3617 / 8160), (43867 / 14364), (174611 / 660), (77683 / 276), (236364091 / 65520));
my $X = $x;
my $Sum1 = 0;
my $Sum2 = 0;
my $Sign = 0;
my $Power = 1;
my $Count = @Bernoulli - 1;

for($X = $x; $X <= $Count; $X++){
$Sum1 += 1 / $X;
}
$Power = 1 / ($X * $X);

for(my $i = $Count; $i >= 0; $i--){
# 符号
$Sign = (($i % 2) == 0 ? 1: -1);

$Sum2 = ($Sum2 + ($Sign * $Bernoulli[$i])) * $Power;
}
$Sum1 += $Sum2 + (0.5 / $X);

# ディガンマ関数(近似) Digamma Function Approximation
$DigammaFunction = log($X) - $Sum1;

return $DigammaFunction;
}


参考URL
『C言語による最新アルゴリズム事典』
ポリガンマ関数 - 高精度計算サイト
Digamma function - Wikipedia, the free encyclopedia
オンライン コンパイラ/インタプリタ
テクニカル分析
プロフィール

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

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

検索フォーム


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