Normal Distribution Table
http://golf.shinh.org/p.rb?Normal+Distribution+Table
Cで、submitされているtopと自分で作成したものの差が100B近くあり、何でこんなに縮むんだと考えていたところ、double erf(double)という関数を見つけた。こんなものがあったんだ。わざわざ、積分なんてする必要はなかった。
ほしいものは、確率密度関数、
phi(x)=1/sqrt(2*PI)*exp(-x*x/2)
をマイナス無限大から正規分布テーブルのZの値まで積分したものPHI(x)だが、上記、erf (Error Function:誤差関数http://en.wikipedia.org/wiki/Error_function)を使うと、
PHI(x)=(1+erf(x/sqrt(2)))/2
で得られる。これで、だいぶ縮みそうだ。
ちなみに、以下のような関数もあるようだ。
double erf(double) : 誤差関数 double erfc(double) : 1-erf(x) double hypot(double,double) : sqrt(x*x,y*y) double j0(double) : Bessel関数 double j1(double) : 同上 double jn(int,double) : 同上 double y0(double) : 同上 double y1(double) : 同上 double yn(int,double) : 同上 double tgamma(double) : gamma関数 double lgamma(double) : log gamma関数