public void ComplexEinE1Agreement()
 {
     foreach (double x in TestUtilities.GenerateRealValues(1.0E-3, 1.0E3, 8))
     {
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
                           AdvancedComplexMath.Ein(x),
                           AdvancedMath.IntegralE(1, x) + AdvancedMath.EulerGamma + Math.Log(x)
                           ));
     }
 }
 public void ComplexEinCinSiAgreement()
 {
     foreach (double x in TestUtilities.GenerateRealValues(1.0E-2, 1.0E2, 8))
     {
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
                           AdvancedComplexMath.Ein(Complex.I * x).Im,
                           AdvancedMath.IntegralSi(x)
                           ));
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
                           AdvancedComplexMath.Ein(Complex.I * x).Re,
                           AdvancedMath.IntegralCin(x)
                           ));
     }
 }
        public void ComplexEinAgreement () {
            foreach (double x in TestUtilities.GenerateRealValues(1.0E-2, 1.0E4, 16)) {
                Console.WriteLine("Ei {0} {1} {2}", x, AdvancedMath.IntegralEi(x), AdvancedMath.EulerGamma + Math.Log(x) - AdvancedComplexMath.Ein(-x));
                if (x < Math.Log(Double.MaxValue / 10.0)) {
                    Assert.IsTrue(TestUtilities.IsNearlyEqual(
                        AdvancedMath.IntegralEi(x),
                        AdvancedMath.EulerGamma + Math.Log(x) - AdvancedComplexMath.Ein(-x)
                    ));
                }
                Console.WriteLine("E1 {0} {1} {2}", x, AdvancedMath.IntegralE(1, x) + AdvancedMath.EulerGamma + Math.Log(x), AdvancedComplexMath.Ein(x));
                Assert.IsTrue(TestUtilities.IsNearlyEqual(
                    AdvancedMath.IntegralE(1, x) + AdvancedMath.EulerGamma + Math.Log(x),
                    AdvancedComplexMath.Ein(x)
                ));
            }

        }