private static void checkDegenerate(MultivariateNormalDistribution target)
{
Assert.AreEqual(1, target.Mean[0]);
Assert.AreEqual(2, target.Mean[1]);
Assert.AreEqual(0, target.Covariance[0, 0]);
Assert.AreEqual(0, target.Covariance[0, 1]);
Assert.AreEqual(0, target.Covariance[1, 0]);
Assert.AreEqual(0, target.Covariance[1, 1]);
// Common measures
double[] mean = target.Mean; // { 1, 2 }
double[] median = target.Median; // { 4, 2 }
double[] var = target.Variance; // { 0.0, 0.0 } (diagonal from cov)
double[,] cov = target.Covariance; // { { 0.0, 0.0 }, { 0.0, 0.0 } }
// Probability mass functions
double pdf1 = target.ProbabilityDensityFunction(new double[] { 1, 2 });
double pdf2 = target.ProbabilityDensityFunction(new double[] { 4, 2 });
double pdf3 = target.ProbabilityDensityFunction(new double[] { 3, 7 });
double lpdf = target.LogProbabilityDensityFunction(new double[] { 3, 7 });
// Cumulative distribution function (for up to two dimensions)
double cdf1 = target.DistributionFunction(new double[] { 1, 2 });
double cdf2 = target.DistributionFunction(new double[] { 3, 5 });
double ccdf1 = target.ComplementaryDistributionFunction(new double[] { 1, 2 });
double ccdf2 = target.ComplementaryDistributionFunction(new double[] { 3, 5 });
Assert.AreEqual(1, mean[0]);
Assert.AreEqual(2, mean[1]);
Assert.AreEqual(1, median[0]);
Assert.AreEqual(2, median[1]);
Assert.AreEqual(0.0, var[0]);
Assert.AreEqual(0.0, var[1]);
Assert.AreEqual(0.0, cov[0, 0]);
Assert.AreEqual(0.0, cov[0, 1]);
Assert.AreEqual(0.0, cov[1, 0]);
Assert.AreEqual(0.0, cov[1, 1]);
Assert.AreEqual(0.15915494309189532, pdf1);
Assert.AreEqual(0.15915494309189532, pdf2);
Assert.AreEqual(0.15915494309189532, pdf3);
Assert.AreEqual(-1.8378770664093456, lpdf);
Assert.AreEqual(1.0, cdf1);
Assert.AreEqual(0.0, cdf2);
Assert.AreEqual(0.0, ccdf1);
Assert.AreEqual(1.0, ccdf2);
}