/// <inheritdoc/>
        /// <remarks>
        /// If <c>x</c> is more than 40 standard deviations from the mean, 0 or 1
        /// is returned, as in these cases the actual value is within
        /// <c>Double.MinValue</c> of 0 or 1.
        /// </remarks>
        public override double cumulativeProbability(double x)
        {
            double dev = x - mean;

            if (FastMath.abs(dev) > 40 * standardDeviation)
            {
                return(dev < 0 ? 0.0d : 1.0d);
            }
            return(0.5 * (1 + Erf.erf(dev / (standardDeviation * SQRT2))));
        }
        /// <inheritdoc/>
        public new double probability(double x0, double x1)
        {
            if (x0 > x1)
            {
                throw new NumberIsTooLargeException <Double, Double>(new LocalizedFormats("LOWER_ENDPOINT_ABOVE_UPPER_ENDPOINT"), x0, x1, true);
            }
            double denom = standardDeviation * SQRT2;
            double v0    = (x0 - mean) / denom;
            double v1    = (x1 - mean) / denom;

            return(0.5 * Erf.erf(v0, v1));
        }