From acd0eb623d22b19237a04b18d7b471b7548e4a10 Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Fri, 20 Dec 2013 11:46:50 +0100 Subject: [PATCH] SpecialFunctions: increase iteration limit of BetaRegularized from 100 to 120 --- src/Numerics/SpecialFunctions/Beta.cs | 2 +- .../SpecialFunctionsTests/SpecialFunctionsTests.cs | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Numerics/SpecialFunctions/Beta.cs b/src/Numerics/SpecialFunctions/Beta.cs index c3ed407e..47d87801 100644 --- a/src/Numerics/SpecialFunctions/Beta.cs +++ b/src/Numerics/SpecialFunctions/Beta.cs @@ -121,7 +121,7 @@ namespace MathNet.Numerics var symmetryTransformation = x >= (a + 1.0) / (a + b + 2.0); /* Continued fraction representation */ - const int maxIterations = 100; + const int maxIterations = 120; var eps = Precision.DoublePrecision; var fpmin = 0.0.Increment() / eps; diff --git a/src/UnitTests/SpecialFunctionsTests/SpecialFunctionsTests.cs b/src/UnitTests/SpecialFunctionsTests/SpecialFunctionsTests.cs index 771a3c46..df0dcb86 100644 --- a/src/UnitTests/SpecialFunctionsTests/SpecialFunctionsTests.cs +++ b/src/UnitTests/SpecialFunctionsTests/SpecialFunctionsTests.cs @@ -267,6 +267,14 @@ namespace MathNet.Numerics.UnitTests.SpecialFunctionsTests AssertHelpers.AlmostEqualRelative(f, SpecialFunctions.BetaRegularized(a, b, x), 11); } + [Test] + public void BetaRegularizedLargeArguments() + { + Assert.That( + SpecialFunctions.BetaRegularized(3846.2382301675848, 738420369.64263761, 0.0000052331266889206809), + Is.EqualTo(0.61624368331298802128).Within(1e-5)); + } + /// /// Logit function. ///