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) )); } } } } }
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); }
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) )); } }