public void ConstructorTest()
{
var dist = new RademacherDistribution();
double median = dist.Median; // 0
double mode = dist.Mode; // 0
double lpdf = dist.LogProbabilityMassFunction(k: -1); // -0.69314718055994529
double ccdf = dist.ComplementaryDistributionFunction(k: 1); // 0.0
int icdf1 = dist.InverseDistributionFunction(p: 0); // -1
int icdf3 = dist.InverseDistributionFunction(p: 1); // +1
double hf = dist.HazardFunction(x: 0); // 0.0
double chf = dist.CumulativeHazardFunction(x: 0); // 0.69314718055994529
string str = dist.ToString(CultureInfo.InvariantCulture); // Rademacher(x)
Assert.AreEqual(0, median);
Assert.AreEqual(0, mode);
Assert.AreEqual(0.69314718055994529, chf);
Assert.AreEqual(-0.69314718055994529, lpdf);
Assert.AreEqual(0, hf);
Assert.AreEqual(0, ccdf);
Assert.AreEqual(-1, icdf1);
Assert.AreEqual(1, icdf3);
Assert.AreEqual("Rademacher(x)", str);
var range1 = dist.GetRange(0.95);
var range2 = dist.GetRange(0.99);
var range3 = dist.GetRange(0.01);
Assert.AreEqual(-1, range1.Min);
Assert.AreEqual(+1, range1.Max);
Assert.AreEqual(-1, range2.Min);
Assert.AreEqual(+1, range2.Max);
Assert.AreEqual(-1, range3.Min);
Assert.AreEqual(+1, range3.Max);
}