diff --git a/src/Numerics.Tests/SpecialFunctionsTests/ModifiedBesselTests.cs b/src/Numerics.Tests/SpecialFunctionsTests/ModifiedBesselTests.cs index 288ed5a6a..6f568b051 100644 --- a/src/Numerics.Tests/SpecialFunctionsTests/ModifiedBesselTests.cs +++ b/src/Numerics.Tests/SpecialFunctionsTests/ModifiedBesselTests.cs @@ -114,6 +114,7 @@ public void BesselK1Approx([Range(0.20, 2.0, 0.20)] double x) public void BesselK1Exact(double x, double expected) { AssertHelpers.AlmostEqualRelative(expected, SpecialFunctions.BesselK1(x), 14); + AssertHelpers.AlmostEqualRelative(expected * Math.Exp(x), SpecialFunctions.BesselK1e(x), 14); } } } diff --git a/src/Numerics/SpecialFunctions/ModifiedBessel.cs b/src/Numerics/SpecialFunctions/ModifiedBessel.cs index 1fd2ae2b6..e414a062f 100644 --- a/src/Numerics/SpecialFunctions/ModifiedBessel.cs +++ b/src/Numerics/SpecialFunctions/ModifiedBessel.cs @@ -282,7 +282,7 @@ public static double BesselK1e(double x) if (x <= 2.0) { double y = x * x - 2.0; - return Math.Log(0.5 * x) * BesselI1(x) + Evaluate.ChebyshevA(BesselK1A, y) / x * Math.Exp(x); + return (Math.Log(0.5 * x) * BesselI1(x) + Evaluate.ChebyshevA(BesselK1A, y) / x) * Math.Exp(x); } double x1 = 8.0 / x - 2.0;