Invert GMLscripts.com

erf

erf The "error function" or cumulative distribution function is encountered in probability and can be used to compute the probability that a Gaussian random number falls within a given range. This algorithm was taken from the article in the link given below.

http://www.codeplanet.eu/files/download/accuratecumnorm.pdf

erf(x)
Returns the probability that a Gaussian random number falls within a given range.
COPY/// @func   erf(x)
///
/// @desc   Returns the probability that a Gaussian random number falls
///         within a given range. This is known as the "error function"
///         or cumulative distribution function.
///
/// @param  {real}      x           value
///
/// @return {real}      value of erf(x)
///
/// GMLscripts.com/license

function erf(x)
{
    var xAbs = abs(x) * sqrt(2);
    var c = 0;
    if (xAbs <= 37) {
        var e = exp(-xAbs*xAbs / 2);
        if (xAbs < 7.07106781186547) {
            var b = 0.0352624965998911 * xAbs + 0.700383064443688;
            b = b * xAbs + 6.37396220353165;
            b = b * xAbs + 33.912866078383;
            b = b * xAbs + 112.079291497871;
            b = b * xAbs + 221.213596169931;
            b = b * xAbs + 220.206867912376;
            c = e * b;
            b = 0.0883883476483184 * xAbs + 1.75566716318264;
            b = b * xAbs + 16.064177579207;
            b = b * xAbs + 86.7807322029461;
            b = b * xAbs + 296.564248779674;
            b = b * xAbs + 637.333633378831;
            b = b * xAbs + 793.826512519948;
            b = b * xAbs + 440.413735824752;
            c /= b;
        }
        else {
            var b = xAbs + 0.65;
            b = xAbs + 4 / b;
            b = xAbs + 3 / b;
            b = xAbs + 2 / b;
            b = xAbs + 1 / b;
            c = e / b / 2.506628274631;
        }
    }
    if (x > 0)
        return 1 - 2 * c;
    else
        return 2 * c - 1;
}

Contributors: Yourself, brac37

GitHub: View · Commits · Blame · Raw