这里给出的普通CDF的实现是单精度近似,其已经用double替换了float,因此仅精确到7或8个有效(十进制)数字。
对于Hart的双精度近似的VB实现,请参见West对累积正态函数的更好近似的图2。
编辑:我将West的实现转换为C ++:
double
phi(double x)
{
static const double RT2PI = sqrt(4.0*acos(0.0));
static const double SPLIT = 7.07106781186547;
static const double N0 = 220.206867912376;
static const double N1 = 221.213596169931;
static const double N2 = 112.079291497871;
static const double N3 = 33.912866078383;
static const double N4 = 6.37396220353165;
static const double N5 = 0.700383064443688;
static const double N6 = 3.52624965998911e-02;
static const double M0 = 440.413735824752;
static const double M1 = 793.826512519948;
static const double M2 = 637.333633378831;
static const double M3 =