From 52c6379cc4531fc3a3e73a323411d87c5373512a Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Sat, 1 Nov 2014 19:45:06 +0100 Subject: [PATCH] Distributions: increase Brent root-finder accuracy in Beta, F and Student-T inverse CDF to adapt to fixed Brent behavior --- src/Numerics/Distributions/Beta.cs | 2 +- src/Numerics/Distributions/FisherSnedecor.cs | 2 +- src/Numerics/Distributions/StudentT.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Numerics/Distributions/Beta.cs b/src/Numerics/Distributions/Beta.cs index f570825a..8e51fd7d 100644 --- a/src/Numerics/Distributions/Beta.cs +++ b/src/Numerics/Distributions/Beta.cs @@ -653,7 +653,7 @@ namespace MathNet.Numerics.Distributions throw new ArgumentException(Resources.InvalidDistributionParameters); } - return Brent.FindRoot(x => SpecialFunctions.BetaRegularized(a, b, x) - p, 0.0, 1.0, accuracy: 1e-8); + return Brent.FindRoot(x => SpecialFunctions.BetaRegularized(a, b, x) - p, 0.0, 1.0, accuracy: 1e-12); } /// diff --git a/src/Numerics/Distributions/FisherSnedecor.cs b/src/Numerics/Distributions/FisherSnedecor.cs index 3e38ffa2..c0b2478d 100644 --- a/src/Numerics/Distributions/FisherSnedecor.cs +++ b/src/Numerics/Distributions/FisherSnedecor.cs @@ -406,7 +406,7 @@ namespace MathNet.Numerics.Distributions return Brent.FindRoot( x => SpecialFunctions.BetaRegularized(d1/2.0, d2/2.0, d1*x/(d1*x + d2)) - p, - 0, 1000, accuracy: 1e-8); + 0, 1000, accuracy: 1e-12); } /// diff --git a/src/Numerics/Distributions/StudentT.cs b/src/Numerics/Distributions/StudentT.cs index d7de6861..56d42dd2 100644 --- a/src/Numerics/Distributions/StudentT.cs +++ b/src/Numerics/Distributions/StudentT.cs @@ -510,7 +510,7 @@ namespace MathNet.Numerics.Distributions var h = freedom/(freedom + (k*k)); var ib = 0.5*SpecialFunctions.BetaRegularized(freedom/2.0, 0.5, h); return x <= location ? ib - p : 1.0 - ib - p; - }, -800, 800, accuracy: 1e-8); + }, -800, 800, accuracy: 1e-12); } ///