public void TestSpecialFunctions_Digamma() { // ensure poles return NaN Assert.That(Fn.Digamma(0.0), Is.NaN, "A1"); Assert.That(Fn.Digamma(-1.0), Is.NaN, "A2"); Assert.That(Fn.Digamma(-2.0), Is.NaN, "A3"); Assert.That(Fn.Digamma(-20.0), Is.NaN, "A4"); Assert.That(Fn.Digamma(-20.0000000001), Is.Not.NaN, "A4b"); // Compare Gamma with Maple: "evalf(Psi(x),20);" Assert.That(Fn.Digamma(0.001), NumericIs.AlmostEqualTo(-1000.5755719318103005), "B1"); Assert.That(Fn.Digamma(0.01), NumericIs.AlmostEqualTo(-100.56088545786867450), "B2"); Assert.That(Fn.Digamma(0.1), NumericIs.AlmostEqualTo(-10.423754940411076795), "B3"); Assert.That(Fn.Digamma(0.2), NumericIs.AlmostEqualTo(-5.2890398965921882955), "B4"); Assert.That(Fn.Digamma(0.4), NumericIs.AlmostEqualTo(-2.5613845445851161457), "B5"); Assert.That(Fn.Digamma(0.6), NumericIs.AlmostEqualTo(-1.5406192138931904148), "B6"); Assert.That(Fn.Digamma(0.9), NumericIs.AlmostEqualTo(-.75492694994705139189), "B7"); Assert.That(Fn.Digamma(0.999), NumericIs.AlmostEqualTo(-.57886180210864542646), "B8"); Assert.That(Fn.Digamma(1.0), NumericIs.AlmostEqualTo(-.57721566490153286061), "B9"); Assert.That(Fn.Digamma(1.001), NumericIs.AlmostEqualTo(-.57557193181030047147, 1e-14), "B10"); Assert.That(Fn.Digamma(1.5), NumericIs.AlmostEqualTo(.36489973978576520559e-1, 1e-14), "B11"); Assert.That(Fn.Digamma(1.9), NumericIs.AlmostEqualTo(.35618416116405971922), "B12"); Assert.That(Fn.Digamma(2.0), NumericIs.AlmostEqualTo(.42278433509846713939), "B13"); Assert.That(Fn.Digamma(10.0), NumericIs.AlmostEqualTo(2.2517525890667211076), "B14"); Assert.That(Fn.Digamma(10.51), NumericIs.AlmostEqualTo(2.3039997054324985520), "B15"); Assert.That(Fn.Digamma(100), NumericIs.AlmostEqualTo(4.6001618527380874002), "B16"); Assert.That(Fn.Digamma(-0.01), NumericIs.AlmostEqualTo(99.406213695944404856), "B17"); Assert.That(Fn.Digamma(-0.1), NumericIs.AlmostEqualTo(9.2450730500529486081), "B18"); Assert.That(Fn.Digamma(-0.5), NumericIs.AlmostEqualTo(.36489973978576520559e-1, 1e-14), "B19"); Assert.That(Fn.Digamma(-1.2), NumericIs.AlmostEqualTo(4.8683247666271948739), "B20"); Assert.That(Fn.Digamma(-2.01), NumericIs.AlmostEqualTo(100.89382514365634023, 1e-13), "B21"); Assert.That(Fn.Digamma(-100.01), NumericIs.AlmostEqualTo(104.57736050326787844, 1e-12), "B22"); }