protected void Check([NotNull] IDistribution distribution, [NotNull] double[] x, [NotNull] double[] expectedPdf, [NotNull] double[] expectedCdf, [NotNull] double[] expectedQuantile) { AssertEqual("StandardDeviation", distribution.StandardDeviation, distribution.Variance.Sqrt()); for (int i = 0; i < x.Length; i++) { AssertEqual($"Pdf({x[i]})", expectedPdf[i], distribution.Pdf(x[i])); } for (int i = 0; i < x.Length; i++) { AssertEqual($"Cdf({x[i]})", expectedCdf[i], distribution.Cdf(x[i])); } for (int i = 0; i < x.Length; i++) { AssertEqual($"Quantile({x[i]})", expectedQuantile[i], distribution.Quantile(x[i])); } for (int i = 0; i < x.Length; i++) { AssertEqual($"Cdf(Quantile({x[i]}))", x[i], distribution.Cdf(distribution.Quantile(x[i]))); } Assert.Throws <ArgumentOutOfRangeException>(() => distribution.Quantile(-1)); Assert.Throws <ArgumentOutOfRangeException>(() => distribution.Quantile(2)); }