Ejemplo n.º 1
0
        public void CarlsonScaling()
        {
            foreach (double x in TestUtilities.GenerateRealValues(1.0E-3, 1.0E1, 2))
            {
                foreach (double y in TestUtilities.GenerateRealValues(1.0E-2, 1.0E2, 2))
                {
                    foreach (double z in TestUtilities.GenerateRealValues(1.0E-1, 1.0E3, 2))
                    {
                        foreach (double lambda in TestUtilities.GenerateRealValues(1.0E-2, 1.0E2, 4))
                        {
                            Assert.IsTrue(TestUtilities.IsNearlyEqual(
                                              AdvancedMath.CarlsonF(lambda * x, lambda * y, lambda * z),
                                              AdvancedMath.CarlsonF(x, y, z) / Math.Sqrt(lambda)
                                              ));

                            Assert.IsTrue(TestUtilities.IsNearlyEqual(
                                              AdvancedMath.CarlsonG(lambda * x, lambda * y, lambda * z),
                                              AdvancedMath.CarlsonG(x, y, z) * Math.Sqrt(lambda)
                                              ));

                            Assert.IsTrue(TestUtilities.IsNearlyEqual(
                                              AdvancedMath.CarlsonD(lambda * x, lambda * y, lambda * z),
                                              AdvancedMath.CarlsonD(x, y, z) * Math.Pow(lambda, -1.5)
                                              ));
                        }
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void CarlsonNormalization()
        {
            // All Carlson integrals are normalized so that they are 1 when all arguments are 1.

            Assert.IsTrue(AdvancedMath.CarlsonF(1.0, 1.0, 1.0) == 1.0);
            Assert.IsTrue(AdvancedMath.CarlsonG(1.0, 1.0, 1.0) == 1.0);
            Assert.IsTrue(AdvancedMath.CarlsonD(1.0, 1.0, 1.0) == 1.0);
        }
Ejemplo n.º 3
0
        public void CarslonDSpecialCases()
        {
            // DLMF 19.20.18
            // R_D(x, x, x) = x^{-3/2}
            // R_D(0, x, x) = 3/4 \pi x^{-3/2}
            // R_D(0, 0, x) = \infty

            foreach (double x in TestUtilities.GenerateRealValues(1.0E-2, 1.0E4, 8))
            {
                Assert.IsTrue(TestUtilities.IsNearlyEqual(
                                  AdvancedMath.CarlsonD(x, x, x), Math.Pow(x, -3.0 / 2.0)
                                  ));

                Assert.IsTrue(TestUtilities.IsNearlyEqual(
                                  AdvancedMath.CarlsonD(0, x, x), 3.0 * Math.PI / 4.0 * Math.Pow(x, -3.0 / 2.0)
                                  ));
            }
        }