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関数