public static double CDF(double location, double scale, double skew, double p, double x) { if (!IsValidParameterSet(location, scale, skew, p)) { throw new ArgumentException(Resources.InvalidDistributionParameters); } scale = AdjustScale(scale, skew, p); x = AdjustX(x, scale, skew, p) - location; var flip = x < 0; if (flip) { skew = -skew; x = -x; } var res = (1.0 - skew) / 2.0 + (1.0 + skew) / 2.0 * Gamma.CDF(1.0 / p, 1.0, Math.Pow(x / (scale * (1.0 + skew)), p)); return(flip ? 1.0 - res : res); }