internal double Probability(TestType type) { switch (type) { case TestType.LeftTailed: return(distribution.LeftExclusiveProbability(value) + 0.5 * distribution.ProbabilityMass(value)); case TestType.RightTailed: return(distribution.RightExclusiveProbability(value) + 0.5 * distribution.ProbabilityMass(value)); case TestType.TwoTailed: if (distribution.Skewness == 0.0) { if (value < distribution.Mean) { return(2.0 * (distribution.LeftExclusiveProbability(value) + 0.5 * distribution.ProbabilityMass(value))); } else { return(2.0 * (distribution.RightExclusiveProbability(value) + 0.5 * distribution.ProbabilityMass(value))); } } else { throw new NotImplementedException(); } default: throw new NotSupportedException(); } }