public void LogForwardTest4()
{
var hmmc = Accord.Tests.Statistics.Models.Fields.
MultivariateMarkovFunctionTest.CreateModel3();
for (int c = 0; c < hmmc.Classes; c++)
{
var hmm = hmmc[c];
var function = new MarkovMultivariateFunction(hmm);
var sequences = Accord.Tests.Statistics.Models.Fields.
MultivariateMarkovFunctionTest.inputTest;
for (int i = 0; i < sequences.Length; i++)
{
var observations = sequences[i];
double expectedLogLikelihood;
double[,] expected = Accord.Statistics.Models.Markov
.ForwardBackwardAlgorithm.LogForward(hmm, observations, out expectedLogLikelihood);
double actualLogLikelihood;
double[,] actual = Accord.Statistics.Models.Fields
.ForwardBackwardAlgorithm.LogForward(function.Factors[0], observations, 0, out actualLogLikelihood);
Assert.IsTrue(expected.IsEqual(actual, 1e-10));
Assert.AreEqual(expectedLogLikelihood, actualLogLikelihood, 1e-6);
Assert.IsFalse(Double.IsNaN(actualLogLikelihood));
}
}
}