Browse Source

Fixed formatting

pull/344/head
BenHewins 11 years ago
parent
commit
701027ff3c
  1. 41
      src/UnitTests/DistributionTests/Continuous/TruncatedNormalTests.cs

41
src/UnitTests/DistributionTests/Continuous/TruncatedNormalTests.cs

@ -108,7 +108,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
[TestCase(6.0, .69146246127401310363770461060833773988360217555457859)] [TestCase(6.0, .69146246127401310363770461060833773988360217555457859)]
[TestCase(10.0, 0.9937903346742238648330218954258077788721022530769078)] [TestCase(10.0, 0.9937903346742238648330218954258077788721022530769078)]
[TestCase(Double.PositiveInfinity, 1.0)] [TestCase(Double.PositiveInfinity, 1.0)]
public void ValidateCumulativeNoBounds(double x, double p) { public void ValidateCumulativeNoBounds(double x, double p)
{
var truncatedNormal = new TruncatedNormal(5.0, 2.0); var truncatedNormal = new TruncatedNormal(5.0, 2.0);
AssertHelpers.AlmostEqualRelative(p, truncatedNormal.CumulativeDistribution(x), 14); AssertHelpers.AlmostEqualRelative(p, truncatedNormal.CumulativeDistribution(x), 14);
} }
@ -146,7 +147,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
[TestCase(0.0, 10.0)] [TestCase(0.0, 10.0)]
[TestCase(10.0, 100.0)] [TestCase(10.0, 100.0)]
[TestCase(-5.0, Double.PositiveInfinity)] [TestCase(-5.0, Double.PositiveInfinity)]
public void ValidateDensityNoBounds(double mean, double sdev) { public void ValidateDensityNoBounds(double mean, double sdev)
{
var n = new TruncatedNormal(mean, sdev); var n = new TruncatedNormal(mean, sdev);
for (var i = 0; i < 11; i++) { for (var i = 0; i < 11; i++) {
var x = i - 5.0; var x = i - 5.0;
@ -166,15 +168,20 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
[TestCase(0.0, 10.0, -10.0)] [TestCase(0.0, 10.0, -10.0)]
[TestCase(10.0, 100.0, 15.0)] [TestCase(10.0, 100.0, 15.0)]
[TestCase(-5.0, Double.PositiveInfinity, -5.0)] [TestCase(-5.0, Double.PositiveInfinity, -5.0)]
public void ValidateDensitySemiFinite(double mean, double sdev, double lowerBound) { public void ValidateDensitySemiFinite(double mean, double sdev, double lowerBound)
{
var truncatedNormal = new TruncatedNormal(mean, sdev, lowerBound); var truncatedNormal = new TruncatedNormal(mean, sdev, lowerBound);
var normal = new Normal(mean, sdev); var normal = new Normal(mean, sdev);
for (var i = 0; i < 11; i++) { for (var i = 0; i < 11; i++)
{
var x = i - 5.0; var x = i - 5.0;
double density; double density;
if(x < lowerBound) { if(x < lowerBound)
{
density = 0d; density = 0d;
} else { }
else
{
var d = (mean - x) / sdev; var d = (mean - x) / sdev;
var pdf = Math.Exp(-0.5 * d * d) / (sdev * Constants.Sqrt2Pi); var pdf = Math.Exp(-0.5 * d * d) / (sdev * Constants.Sqrt2Pi);
density = pdf / (1.0 - normal.CumulativeDistribution(lowerBound)); density = pdf / (1.0 - normal.CumulativeDistribution(lowerBound));
@ -193,15 +200,20 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
[TestCase(0.0, 10.0, -10.0, 15.0)] [TestCase(0.0, 10.0, -10.0, 15.0)]
[TestCase(10.0, 100.0, 15.0, 100.0)] [TestCase(10.0, 100.0, 15.0, 100.0)]
[TestCase(-5.0, Double.PositiveInfinity, -5.0, 0.0)] [TestCase(-5.0, Double.PositiveInfinity, -5.0, 0.0)]
public void ValidateDensityFinite(double mean, double sdev, double lowerBound, double upperBound) { public void ValidateDensityFinite(double mean, double sdev, double lowerBound, double upperBound)
{
var truncatedNormal = new TruncatedNormal(mean, sdev, lowerBound, upperBound); var truncatedNormal = new TruncatedNormal(mean, sdev, lowerBound, upperBound);
var normal = new Normal(mean, sdev); var normal = new Normal(mean, sdev);
for (var i = 0; i < 11; i++) { for (var i = 0; i < 11; i++)
{
var x = i - 5.0; var x = i - 5.0;
double density; double density;
if (x < lowerBound || upperBound < x) { if (x < lowerBound || upperBound < x)
{
density = 0d; density = 0d;
} else { }
else
{
var d = (mean - x) / sdev; var d = (mean - x) / sdev;
var pdf = Math.Exp(-0.5 * d * d) / (sdev * Constants.Sqrt2Pi); var pdf = Math.Exp(-0.5 * d * d) / (sdev * Constants.Sqrt2Pi);
density = pdf / (normal.CumulativeDistribution(upperBound) - normal.CumulativeDistribution(lowerBound)); density = pdf / (normal.CumulativeDistribution(upperBound) - normal.CumulativeDistribution(lowerBound));
@ -222,9 +234,11 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
[TestCase(0.0, 10.0)] [TestCase(0.0, 10.0)]
[TestCase(10.0, 100.0)] [TestCase(10.0, 100.0)]
[TestCase(-5.0, Double.PositiveInfinity)] [TestCase(-5.0, Double.PositiveInfinity)]
public void ValidateDensityLnNoBounds(double mean, double sdev) { public void ValidateDensityLnNoBounds(double mean, double sdev)
{
var n = new TruncatedNormal(mean, sdev); var n = new TruncatedNormal(mean, sdev);
for (var i = 0; i < 11; i++) { for (var i = 0; i < 11; i++)
{
var x = i - 5.0; var x = i - 5.0;
var d = (mean - x) / sdev; var d = (mean - x) / sdev;
var pdfln = (-0.5 * (d * d)) - Math.Log(sdev) - Constants.LogSqrt2Pi; var pdfln = (-0.5 * (d * d)) - Math.Log(sdev) - Constants.LogSqrt2Pi;
@ -244,7 +258,8 @@ namespace MathNet.Numerics.UnitTests.DistributionTests.Continuous
/// Can sample sequence. /// Can sample sequence.
/// </summary> /// </summary>
[Test] [Test]
public void CanSampleSequence() { public void CanSampleSequence()
{
var truncatedNormal = new TruncatedNormal(5.0, 2.0, -10, 10.0); var truncatedNormal = new TruncatedNormal(5.0, 2.0, -10, 10.0);
var ied = truncatedNormal.Samples(); var ied = truncatedNormal.Samples();
GC.KeepAlive(ied.Take(5).ToArray()); GC.KeepAlive(ied.Take(5).ToArray());

Loading…
Cancel
Save