# cdfn, cdfnc¶

## Purpose¶

cdfn() computes the cumulative distribution function (cdf) of the Normal distribution. cdfnc() computes 1 minus the cdf of the Normal distribution.

## Format¶

p = cdfn(x[, mu, sigma])
p = cdfnc(x)
Parameters
• x (NxK matrix) – Values at which to evaluate the normal cumulative distribution function or the complement of the normal cdf.

• mu (scalar) – Optional input, mean parameter.

• std (scalar) – Optional input, standard deviation.

Returns
• p (NxK matrix) – Each element in p is the normal cumulative distribution function evaluated at the corresponding element in x.

• pc (NxK matrix) – Each element in pc is the complement of the normal cumulative distribution function evaluated at the corresponding element in x.

## Examples¶

### Example 1: Basic use¶

// Value to compute
x = 0.5;

p = cdfn(x);
pc = cdfnc(x);


After above code,

p =  0.69146246
pc = 0.30853754


### Example 2: Specify mean and standard deviation¶

// Value
x = 0.5;

// Mean
mu = 1.1;

// Standard deviation
std = 3;

p = cdfn(x, mu, std);


After above code,

p = 0.42074029


### Example 3¶

// Value
x = { -2 -1 0 1 2 };

p = cdfn(x);
pc = cdfnc(x);


After above code,

x  = -2.0000000 -1.0000000 0.0000000 1.0000000 2.0000000
p  =  0.0227501 0.15865525 0.5000000 0.8413447 0.9772498
pc =  0.9772498 0.84134475 0.5000000 0.1586552 0.0227501


## Remarks¶

Note that:

cdfn(x) + cdfnc(x) = 1


However, many applications expect cdfn(x) to approach 1 but never actually reach it. Because of this, we have capped the return value of cdfn() at $$1 - machine\:\ epsilon$$, or approximately $$1 - 1.11e-16$$. As the relative error of cdfn() is about $$\pm 5e-15$$ for cdfn(x) around 1, this does not invalidate the result. What it does mean is that for $$abs(x) > \approx 8.2924$$, the identity does not hold true. If you have a need for the uncapped value of cdfn(), the following code will return it:

p = cdfn(x);
if p >= 1-eps;
p = 1;
endif;


where the value of machine epsilon is obtained as follows:

x = 1;
do while 1-x /= 1;
eps = x;
x = x/2;
endo;


Note that this is an alternate definition of machine epsilon. Machine epsilon is usually defined as the smallest number such that $$1 + machine\:\ epsilon > 1$$, which is about 2.23e-16. This defines machine epsilon as the smallest number such that $$1 - machine\:\ epsilon < 1$$, or about 1.11e-16.

The erf() and erfc() functions are also provided, and may sometimes be more useful than cdfn() and cdfnc().