|
|
|
@ -103,5 +103,101 @@ namespace MathNet.Numerics.UnitTests.DistributionTests |
|
|
|
AssertEx.AreEqual<double>(precShape, ng.PrecisionShape); |
|
|
|
AssertEx.AreEqual<double>(precInvScale, ng.PrecisionInverseScale); |
|
|
|
} |
|
|
|
|
|
|
|
[Test] |
|
|
|
[Row(0.0, 1.0, 1.0, 1.0)] |
|
|
|
[Row(10.0, 1.0, 2.0, 2.0)] |
|
|
|
public void CanGetPrecisionShape(double meanLocation, double meanScale, double precShape, double precInvScale) |
|
|
|
{ |
|
|
|
NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale); |
|
|
|
AssertEx.AreEqual<double>(precShape, ng.PrecisionShape); |
|
|
|
} |
|
|
|
|
|
|
|
[Test, MultipleAsserts] |
|
|
|
[Row(0.0, 1.0, 1.0, 1.0)] |
|
|
|
[Row(10.0, 1.0, 2.0, 2.0)] |
|
|
|
public void CanSetPrecisionShape(double meanLocation, double meanScale, double precShape, double precInvScale) |
|
|
|
{ |
|
|
|
NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale); |
|
|
|
ng.PrecisionShape = 5.0; |
|
|
|
AssertEx.AreEqual<double>(meanLocation, ng.MeanLocation); |
|
|
|
AssertEx.AreEqual<double>(meanScale, ng.MeanScale); |
|
|
|
AssertEx.AreEqual<double>(5.0, ng.PrecisionShape); |
|
|
|
AssertEx.AreEqual<double>(precInvScale, ng.PrecisionInverseScale); |
|
|
|
} |
|
|
|
|
|
|
|
[Test] |
|
|
|
[Row(0.0, 1.0, 1.0, 1.0)] |
|
|
|
[Row(10.0, 1.0, 2.0, 2.0)] |
|
|
|
public void CanGetPrecisionInverseScale(double meanLocation, double meanScale, double precShape, double precInvScale) |
|
|
|
{ |
|
|
|
NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale); |
|
|
|
AssertEx.AreEqual<double>(precInvScale, ng.PrecisionInverseScale); |
|
|
|
} |
|
|
|
|
|
|
|
[Test, MultipleAsserts] |
|
|
|
[Row(0.0, 1.0, 1.0, 1.0)] |
|
|
|
[Row(10.0, 1.0, 2.0, 2.0)] |
|
|
|
public void CanSetPrecisionPrecisionInverseScale(double meanLocation, double meanScale, double precShape, double precInvScale) |
|
|
|
{ |
|
|
|
NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale); |
|
|
|
ng.PrecisionInverseScale = 5.0; |
|
|
|
AssertEx.AreEqual<double>(meanLocation, ng.MeanLocation); |
|
|
|
AssertEx.AreEqual<double>(meanScale, ng.MeanScale); |
|
|
|
AssertEx.AreEqual<double>(precShape, ng.PrecisionShape); |
|
|
|
AssertEx.AreEqual<double>(5.0, ng.PrecisionInverseScale); |
|
|
|
} |
|
|
|
|
|
|
|
[Test, MultipleAsserts] |
|
|
|
[Row(0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 2.0)] |
|
|
|
[Row(10.0, 1.0, 2.0, 2.0, 10.0, 1.0, 4.0)] |
|
|
|
[Row(10.0, 1.0, 2.0, Double.PositiveInfinity, 10.0, 2.0, Double.PositiveInfinity)] |
|
|
|
public void CanGetMeanMarginal(double meanLocation, double meanScale, double precShape, double precInvScale, |
|
|
|
double meanMarginalMean, double meanMarginalScale, double meanMarginalDoF) |
|
|
|
{ |
|
|
|
NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale); |
|
|
|
var mm = ng.MeanMarginal(); |
|
|
|
AssertEx.AreEqual<double>(meanMarginalMean, mm.Location); |
|
|
|
AssertEx.AreEqual<double>(meanMarginalScale, mm.Scale); |
|
|
|
AssertEx.AreEqual<double>(meanMarginalDoF, mm.DegreesOfFreedom); |
|
|
|
} |
|
|
|
|
|
|
|
[Test, MultipleAsserts] |
|
|
|
[Row(0.0, 1.0, 1.0, 1.0)] |
|
|
|
[Row(10.0, 1.0, 2.0, 2.0)] |
|
|
|
[Row(10.0, 1.0, 2.0, Double.PositiveInfinity)] |
|
|
|
public void CanGetPrecisionMarginal(double meanLocation, double meanScale, double precShape, double precInvScale) |
|
|
|
{ |
|
|
|
NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale); |
|
|
|
var pm = ng.PrecisionMarginal(); |
|
|
|
AssertEx.AreEqual<double>(precShape, pm.Shape); |
|
|
|
AssertEx.AreEqual<double>(precInvScale, pm.InvScale); |
|
|
|
} |
|
|
|
|
|
|
|
[Test, MultipleAsserts] |
|
|
|
[Row(0.0, 1.0, 1.0, 1.0, 0.0, 1.0)] |
|
|
|
[Row(10.0, 1.0, 2.0, 2.0, 10.0, 1.0)] |
|
|
|
[Row(10.0, 1.0, 2.0, Double.PositiveInfinity, 10.0, 2.0)] |
|
|
|
public void CanGetMean(double meanLocation, double meanScale, double precShape, double precInvScale, |
|
|
|
double meanMean, double meanPrecision) |
|
|
|
{ |
|
|
|
NormalGamma ng = new NormalGamma(meanLocation, meanScale, precShape, precInvScale); |
|
|
|
AssertEx.AreEqual<double>(meanMean, ng.Mean.Mean); |
|
|
|
AssertEx.AreEqual<double>(meanPrecision, ng.Mean.Precision); |
|
|
|
} |
|
|
|
|
|
|
|
[Test] |
|
|
|
public void HasRandomSource() |
|
|
|
{ |
|
|
|
NormalGamma ng = new NormalGamma(0.0, 1.0, 1.0, 1.0); |
|
|
|
Assert.IsNotNull(ng.RandomSource); |
|
|
|
} |
|
|
|
|
|
|
|
[Test] |
|
|
|
public void CanSetRandomSource() |
|
|
|
{ |
|
|
|
NormalGamma ng = new NormalGamma(0.0, 1.0, 1.0, 1.0); |
|
|
|
ng.RandomSource = new Random(); |
|
|
|
} |
|
|
|
} |
|
|
|
} |