public void LogBackwardTest()
{
HiddenMarkovModel hmm = Accord.Tests.Statistics.Models.Markov.
ForwardBackwardAlgorithmTest.CreateModel2();
int[] observations = { 0, 1, 1, 0 };
double logLikelihood;
double[,] expected = Matrix.Log(
ForwardBackwardAlgorithm.Backward(hmm, observations));
double[,] actual =
ForwardBackwardAlgorithm.LogBackward(hmm, observations, out logLikelihood);
Assert.IsTrue(expected.IsEqual(actual, 1e-10));
foreach (double e in actual)
Assert.IsFalse(double.IsNaN(e));
double p = System.Math.Exp(logLikelihood);
Assert.AreEqual(0.054814695, p, 1e-8);
Assert.IsFalse(double.IsNaN(p));
}