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 immediately below.

http://www4.ncsu.edu/unity/users/p/pfackler/www/ECG790C/accuratecumnorm.pdf

If the above link does not work, an alternate version of the same paper can be found below.

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

erf(x)
Returns the value of erf(x), the "error function" or cumulative distribution function, which computes the probability that a Gaussian random number falls within a given range.
COPY/// erf(x)
//
//  Returns the value of erf(x), the "error function" or cumulative
//  distribution function, which computes the probability that a 
//  Gaussian random number falls within a given range.
//
//      x           value, real
//
/// GMLscripts.com/license
{
    var xAbs, c, e, b;
    xAbs = abs(argument0) * sqrt(2);
    if (xAbs > 37)
        c = 0;
    else {
        e = exp(-xAbs*xAbs / 2);
        if (xAbs < 7.07106781186547) {
            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 {
            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 (argument0 > 0)
        return 1 - 2*c;
    else
        return 2*c - 1;
}

Contributors: Yourself, brac37

GitHub: View · Commits · Blame · Raw