public void LogForwardTest()
{
HiddenMarkovModel hmm = Accord.Tests.Statistics.Models.Markov.
ForwardBackwardAlgorithmTest.CreateModel1();
int[] observations = { 2, 2, 1, 0 };
double[,] expected = Matrix.Log(
ForwardBackwardAlgorithm.Forward(hmm, observations));
double[,] actual =
ForwardBackwardAlgorithm.LogForward(hmm, observations);
Assert.IsTrue(expected.IsEqual(actual, 1e-10));
double p = 0;
for (int i = 0; i < hmm.States; i++)
p += Math.Exp(actual[observations.Length - 1, i]);
Assert.AreEqual(0.00384315, p, 1e-8);
Assert.IsFalse(double.IsNaN(p));
}