Example #1
0
        [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);
        }
Example #2
0
        [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);
        }