public void Log1pTest()
{
double precision = 1e-16;
Assert.IsTrue(double.IsNaN(Special.Log1p(double.NaN)));
Assert.IsTrue(double.IsNaN(Special.Log1p(-32.0482175)));
Assert.AreEqual(double.PositiveInfinity, Special.Log1p(double.PositiveInfinity));
double b = System.Math.Log(1 - 7e-32);
double c = Special.Log1p(7e-32);
Assert.AreEqual(c, 7e-32);
Assert.AreEqual(-0.2941782295312541, Special.Log1p(-0.254856327), precision);
Assert.AreEqual(7.368050685564151, Special.Log1p(1583.542), precision);
Assert.AreEqual(0.4633708685409921, Special.Log1p(0.5894227), precision);
Assert.AreEqual(709.782712893384, Special.Log1p(double.MaxValue), precision);
Assert.IsTrue(double.IsNaN(Special.Log1p(double.MinValue)));
}