Stand-alone C# code for Φ(x)

The function Φ(x) is the cumulative density function (CDF) of a standard normal (Gaussian) random variable. It is closely related to the error function erf(x).


static double Phi(double x)
{
   
// constants
   
double a1 = 0.254829592;
   
double a2 = -0.284496736;
   
double a3 = 1.421413741;
   
double a4 = -1.453152027;
   
double a5 = 1.061405429;
   
double p = 0.3275911;
       
   
// Save the sign of x
   
int sign = 1;
   
if (x < 0)
        sign
= -1;
    x
= Math.Abs(x) / Math.Sqrt(2.0);
       
   
// A&S formula 7.1.26
   
double t = 1.0 / (1.0 + p*x);
   
double y = 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t * Math.Exp(-x*x);
       
   
return 0.5 * (1.0 + sign*y);
}

static void TestPhi()
{
   
// Select a few input values
   
double[] x =
   
{
       
-3,
       
-1,
       
0.0,
       
0.5,
       
2.1
   
};

   
// Output computed by Mathematica
   
// y = Phi[x]
   
double[] y =
   
{
       
0.00134989803163,
       
0.158655253931,
       
0.5,
       
0.691462461274,
       
0.982135579437
   
};

   
double maxError = 0.0;
   
for (int i = 0; i < x.Length; ++i)
   
{
       
double error = Math.Abs(y[i] - Phi(x[i]));
       
if (error > maxError)
            maxError
= error;
   
}

       
Console.WriteLine("Maximum error: {0}", maxError);
}
   

A&S refers to Handbook of Mathematical Functions by Abramowitz and Stegun. See Stand-alone error function for details of the algorithm.

This code is in the public domain. Do whatever you want with it, no strings attached.

Other versions: C++, Python

Stand-alone numerical code

 

Home