public void GammaUpperRTest()
{
// Example values from
// http://opensource.zyba.com/code/maths/special/gamma/gamma_upper_reg.php
double expected, actual;
actual = Gamma.UpperIncomplete(0.000000, 2);
expected = 1.000000;
Assert.AreEqual(expected, actual);
Assert.IsFalse(double.IsNaN(actual));
actual = Gamma.UpperIncomplete(0.250000, 2);
expected = 0.017286;
Assert.AreEqual(expected, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
actual = Gamma.UpperIncomplete(0.500000, 2);
expected = 0.045500;
Assert.AreEqual(expected, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
actual = Gamma.UpperIncomplete(0.750000, 2);
expected = 0.085056;
Assert.AreEqual(expected, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
actual = Gamma.UpperIncomplete(1.000000, 2);
expected = 0.135335;
Assert.AreEqual(expected, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
actual = Gamma.UpperIncomplete(1.250000, 2);
expected = 0.194847;
Assert.AreEqual(expected, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
actual = Gamma.UpperIncomplete(1.500000, 2);
expected = 0.261464;
Assert.AreEqual(expected, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
actual = Gamma.UpperIncomplete(1.750000, 2);
expected = 0.332706;
Assert.AreEqual(expected, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
actual = Gamma.UpperIncomplete(2.000000, 2);
expected = 0.406006;
Assert.AreEqual(expected, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
actual = Gamma.UpperIncomplete(2.250000, 2);
expected = 0.478944;
Assert.AreEqual(expected, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
actual = Gamma.UpperIncomplete(2.500000, 2);
expected = 0.549416;
Assert.AreEqual(expected, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
actual = Gamma.UpperIncomplete(2.750000, 2);
expected = 0.615734;
Assert.AreEqual(expected, actual, 1e-6);
Assert.IsFalse(double.IsNaN(actual));
}