コード例 #1
0
 public void ComplexPsiDuplication () {
     foreach (Complex z in TestUtilities.GenerateComplexValues(1.0E-2, 1.0E3, 12)) {
         Console.WriteLine(z);
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
             AdvancedComplexMath.Psi(2.0 * z),
             AdvancedComplexMath.Psi(z) / 2.0 + AdvancedComplexMath.Psi(z + 0.5) / 2.0 + Math.Log(2.0)
         ));
     }
 }
コード例 #2
0
 public void ComplexPsiConjugation () {
     foreach (Complex z in TestUtilities.GenerateComplexValues(1.0E-2, 1.0E3, 12)) {
         Console.WriteLine(z);
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
             AdvancedComplexMath.Psi(z.Conjugate),
             AdvancedComplexMath.Psi(z).Conjugate
         ));
     }
 }
コード例 #3
0
 public void ComplexPsiRecurrence () {
     foreach (Complex z in TestUtilities.GenerateComplexValues(1.0E-2, 1.0E2, 16)) {
         //Complex z = new Complex(0.398612, 888.865);
         //double t = Math.Exp(900.0);
         //Console.WriteLine("{0} {1}", t, 1.0 / t);
         Console.WriteLine("z={0}", z);
         //Console.WriteLine("Psi(1-z)={0}", AdvancedComplexMath.Psi(1.0 - z));
         //Console.WriteLine("Tan(pi z)={0}", ComplexMath.Tan(Math.PI * z));
         //Console.WriteLine("{0} {1}", z, AdvancedComplexMath.Psi(z));
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
             AdvancedComplexMath.Psi(z + 1.0),
             AdvancedComplexMath.Psi(z) + 1.0 / z
         ));
     }
 }
コード例 #4
0
 public void ComplexPsiImaginaryParts () {
     // don't get these values get too big, because we loose trig function accuracy
     foreach (double y in TestUtilities.GenerateRealValues(0.01, 100.0, 10)) {
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
             AdvancedComplexMath.Psi(new Complex(0.0, y)).Im,
             (Math.PI / Math.Tanh(Math.PI * y) + 1.0 / y) / 2.0
         ));
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
             AdvancedComplexMath.Psi(new Complex(0.5, y)).Im,
             Math.PI * Math.Tanh(Math.PI * y) / 2.0
         ));
         Assert.IsTrue(TestUtilities.IsNearlyEqual(
             AdvancedComplexMath.Psi(new Complex(1.0, y)).Im,
             (Math.PI / Math.Tanh(Math.PI * y) - 1.0 / y) / 2.0
         ));
     }
 }