public void BesselI0Exact(double x, double expected)
 {
     AssertHelpers.AlmostEqualRelative(expected, SpecialFunctions.BesselI0(x), 14);
 }
 public void BesselK0Approx([Range(0.20, 2.0, 0.20)] double x)
 {
     // Approx by Abramowitz/Stegun 9.8.5
     Assert.AreEqual(Evaluate.Polynomial(x / 2.0, -Math.Log(x / 2.0) * SpecialFunctions.BesselI0(x) - 0.57721566, 0.0, 0.42278420, 0.0, 0.23069756, 0.0, 0.03488590, 0.0, 0.00262698, 0.0, 0.00010750, 0.0, 0.00000740), SpecialFunctions.BesselK0(x), 1e-8);
 }
 public void BesselI0Approx([Range(-3.75, 3.75, 0.25)] double x)
 {
     // Approx by Abramowitz/Stegun 9.8.1
     Assert.AreEqual(Evaluate.Polynomial(x / 3.75, 1.0, 0.0, 3.5156229, 0.0, 3.0899424, 0.0, 1.2067492, 0.0, 0.2659732, 0.0, 0.0360768, 0.0, 0.0045813), SpecialFunctions.BesselI0(x), 1e-7);
 }