[TestCase(-3.0, 3.5, 1922.50563031148665828996231149)] // D(-3) exp(π x) = exp(π x)/π^3 public void TestExponential(double n, double x, double expected) { Func <double, double> f = (t) => Math.Exp(Math.PI * t); Assert.LessOrEqual( (expected - DifferIntegrate.DoubleExponential(f, x, n, x0: double.NegativeInfinity)) / expected, 1E-9, "D({0}) exp(π x) (Double-Exponential) where x = {1}", n, x); Assert.LessOrEqual( (expected - DifferIntegrate.GaussLegendre(f, x, n, x0: double.NegativeInfinity)) / expected, 1E-6, "D({0}) exp(π x) (Gauss-Legendre) where x = {1}", n, x); Assert.LessOrEqual( (expected - DifferIntegrate.GaussKronrod(f, x, n, x0: double.NegativeInfinity)) / expected, 1E-7, "D({0}) exp(π x) (Gauss-Kronrod) where x = {1}", n, x); }
[TestCase(-3.0, 3.0, 4.05)] // D(-3) x^2 = x^5/60 public void TestPolynomial(double n, double x, double expected) { Func <double, double> f = (t) => Math.Pow(t, 2); Assert.LessOrEqual( (expected - DifferIntegrate.DoubleExponential(f, x, n, x0: 0.0)) / expected, 1E-7, "D({0}) x^2 (Double-Exponetial) where x = {1}", n, x); Assert.LessOrEqual( (expected - DifferIntegrate.GaussLegendre(f, x, n, x0: 0.0)) / expected, 1E-6, "D({0}) x^2 (Gauss-Legendre) where x = {1}", n, x); Assert.LessOrEqual( (expected - DifferIntegrate.GaussKronrod(f, x, n, x0: 0.0)) / expected, 1E-4, "D({0}) x^2 (Gauss-Kronrod) where x = {1}", n, x); }