public void GammaFunctionsTest()
{
double x = 0.17;
double gamma = Gamma.Function(x); // 5.4511741801042106
double gammap = Gamma.Multivariate(x, p: 2); // -39.473585841300675
double log = Gamma.Log(x); // 1.6958310313607003
double logp = Gamma.Log(x, p: 2); // 3.6756317353404273
double stir = Gamma.Stirling(x); // 24.040352622960743
double psi = Gamma.Digamma(x); // -6.2100942259248626
double tri = Gamma.Trigamma(x); // 35.915302055854525
double a = 4.2;
double lower = Gamma.LowerIncomplete(a, x); // 0.000015685073063633753
double upper = Gamma.UpperIncomplete(a, x); // 0.9999843149269364
Assert.AreEqual(0.9999843149269364, upper);
Assert.AreEqual(0.000015685073063633753, lower);
Assert.AreEqual(5.4511741801042106, gamma);
Assert.AreEqual(-39.473585841300675, gammap);
Assert.AreEqual(1.6958310313607003, log);
Assert.AreEqual(3.6756317353404273, logp);
Assert.AreEqual(24.040352622960743, stir);
Assert.AreEqual(-6.2100942259248626, psi);
Assert.AreEqual(35.915302055854525, tri);
}