public void ComplexLogGammaRealLogGammaAgreement()
 {
     foreach (double x in TestUtilities.GenerateRealValues(1.0E-4, 1.0E4, 24))
     {
         Assert.IsTrue(TestUtilities.IsNearlyEqual(AdvancedComplexMath.LogGamma(x), AdvancedMath.LogGamma(x)));
     }
 }
 public void ComplexLogGammaConjugation () {
     foreach (Complex z in TestUtilities.GenerateComplexValues(1.0E-4, 1.0E4, 24)) {
         if (z.Re <= 0.0) continue;
         Console.WriteLine("z={0} lnG(z*)={1} lnG*(z)={2}", z, AdvancedComplexMath.LogGamma(z.Conjugate), AdvancedComplexMath.LogGamma(z).Conjugate);
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
             AdvancedComplexMath.LogGamma(z.Conjugate),
             AdvancedComplexMath.LogGamma(z).Conjugate
         ));
     }
 }
 public void ComplexLogGammaConjugation()
 {
     foreach (Complex z in TestUtilities.GenerateComplexValues(1.0E-4, 1.0E4, 24))
     {
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
                           AdvancedComplexMath.LogGamma(z.Conjugate),
                           AdvancedComplexMath.LogGamma(z).Conjugate
                           ));
     }
 }
 public void ComplexLogGammaComplexGammaAgreement()
 {
     foreach (Complex z in TestUtilities.GenerateComplexValues(1.0E-2, 1.0E2, 16))
     {
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
                           ComplexMath.Exp(AdvancedComplexMath.LogGamma(z)),
                           AdvancedComplexMath.Gamma(z)
                           ));
     }
 }
 public void ComplexLogGammaRecurrance()
 {
     // Don't try for z << 1, because z + 1 won't retain enough digits to satisfy
     foreach (Complex z in TestUtilities.GenerateComplexValues(1.0E-2, 1.0E4, 24))
     {
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
                           AdvancedComplexMath.LogGamma(z + 1.0),
                           AdvancedComplexMath.LogGamma(z) + ComplexMath.Log(z)
                           ));
     }
 }
 public void ComplexLogGammaSpecialValues()
 {
     Assert.IsTrue(TestUtilities.IsNearlyEqual(AdvancedComplexMath.LogGamma(-0.5), new Complex(Math.Log(2.0 * Math.Sqrt(Math.PI)), -Math.PI)));
     Assert.IsTrue(TestUtilities.IsNearlyEqual(AdvancedComplexMath.LogGamma(-1.5), new Complex(Math.Log(4.0 * Math.Sqrt(Math.PI) / 3.0), -2.0 * Math.PI)));
     Assert.IsTrue(TestUtilities.IsNearlyEqual(AdvancedComplexMath.LogGamma(-2.5), new Complex(Math.Log(8.0 * Math.Sqrt(Math.PI) / 15.0), -3.0 * Math.PI)));
 }