/// <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)); }