public void ConstructorTest()
{
var levy = new LevyDistribution(location: 1, scale: 4.2);
double mean = levy.Mean; // +inf
double median = levy.Median; // 10.232059220934481
double mode = levy.Mode; // NaN
double var = levy.Variance; // +inf
double cdf = levy.DistributionFunction(x: 1.4); // 0.0011937454448720029
double pdf = levy.ProbabilityDensityFunction(x: 1.4); // 0.016958939623898304
double lpdf = levy.LogProbabilityDensityFunction(x: 1.4); // -4.0769601727487803
double ccdf = levy.ComplementaryDistributionFunction(x: 1.4); // 0.99880625455512795
double icdf = levy.InverseDistributionFunction(p: cdf); // 1.3999999
double hf = levy.HazardFunction(x: 1.4); // 0.016979208476674869
double chf = levy.CumulativeHazardFunction(x: 1.4); // 0.0011944585265140923
string str = levy.ToString(CultureInfo.InvariantCulture); // Lévy(x; μ = 1, c = 4.2)
// Tested against GNU R's rmutils package
//
// dlevy(1.4, m=1, s=4.2)
// [1] 0.016958939623898303811
//
// plevy(1.4, m=1, s=4.2)
// [1] 0.0011937454448720519196
Assert.AreEqual(Double.PositiveInfinity, mean);
Assert.AreEqual(10.232059220934481, median);
Assert.IsTrue(Double.IsNaN(mode));
Assert.AreEqual(Double.PositiveInfinity, var);
Assert.AreEqual(0.0011944585265140923, chf);
Assert.AreEqual(0.0011937454448720519196, cdf, 1e-10); // R
Assert.AreEqual(0.016958939623898303811, pdf, 1e-10); // R
Assert.AreEqual(-4.0769601727487803, lpdf);
Assert.AreEqual(0.016979208476674869, hf);
Assert.AreEqual(0.99880625455512795, ccdf);
Assert.AreEqual(1.4, icdf, 1e-6);
Assert.AreEqual("Lévy(x; μ = 1, c = 4.2)", str);
double p = levy.DistributionFunction(levy.Median);
Assert.AreEqual(0.5, p, 1e-10);
Assert.IsFalse(Double.IsNaN(p));
var range1 = levy.GetRange(0.95);
var range2 = levy.GetRange(0.99);
var range3 = levy.GetRange(0.01);
Assert.AreEqual(2.0933346408334241, range1.Min);
Assert.AreEqual(1069.1206671123464, range1.Max);
Assert.AreEqual(1.6330166470647871, range2.Min);
Assert.AreEqual(26737.630417446126, range2.Max);
Assert.AreEqual(1.6330166470647871, range3.Min);
Assert.AreEqual(26737.630417446126, range3.Max);
}