diff --git a/src/Numerics/Distributions/Triangular.cs b/src/Numerics/Distributions/Triangular.cs index 6e730693..ac0f690d 100644 --- a/src/Numerics/Distributions/Triangular.cs +++ b/src/Numerics/Distributions/Triangular.cs @@ -306,8 +306,7 @@ namespace MathNet.Numerics.Distributions /// public static double PDF(double lower, double upper, double mode, double x) { - if (upper < mode) throw new ArgumentOutOfRangeException("upper", Resources.InvalidDistributionParameters); - if (mode < lower) throw new ArgumentOutOfRangeException("lower", Resources.InvalidDistributionParameters); // TODO: Is "lower" the appropriate argument here? + if (!(upper >= mode && mode >= lower)) throw new ArgumentException(Resources.InvalidDistributionParameters); var a = lower; var b = upper; @@ -343,8 +342,7 @@ namespace MathNet.Numerics.Distributions /// public static double CDF(double lower, double upper, double mode, double x) { - if (upper < mode) throw new ArgumentOutOfRangeException("upper", Resources.InvalidDistributionParameters); - if (lower > mode) throw new ArgumentOutOfRangeException("lower", Resources.InvalidDistributionParameters); + if (!(upper >= mode && mode >= lower)) throw new ArgumentException(Resources.InvalidDistributionParameters); var a = lower; var b = upper; @@ -368,8 +366,7 @@ namespace MathNet.Numerics.Distributions /// public static double InvCDF(double lower, double upper, double mode, double p) { - if (upper < mode) throw new ArgumentOutOfRangeException("upper", Resources.InvalidDistributionParameters); - if (lower > mode) throw new ArgumentOutOfRangeException("lower", Resources.InvalidDistributionParameters); + if (!(upper >= mode && mode >= lower)) throw new ArgumentException(Resources.InvalidDistributionParameters); var a = lower; var b = upper; @@ -392,6 +389,8 @@ namespace MathNet.Numerics.Distributions /// a sample from the distribution. public static double Sample(System.Random rnd, double lower, double upper, double mode) { + if (!(upper >= mode && mode >= lower)) throw new ArgumentException(Resources.InvalidDistributionParameters); + var a = lower; var b = upper; var c = mode; @@ -412,6 +411,8 @@ namespace MathNet.Numerics.Distributions /// a sequence of samples from the distribution. public static IEnumerable Samples(System.Random rnd, double lower, double upper, double mode) { + if (!(upper >= mode && mode >= lower)) throw new ArgumentException(Resources.InvalidDistributionParameters); + while (true) { yield return Sample(rnd, lower, upper, mode);