public void LogForwardBackwardTest()
{
HiddenMarkovModel hmm = Accord.Tests.Statistics.Models.Markov.
ForwardBackwardAlgorithmTest.CreateModel1();
MarkovDiscreteFunction function = new MarkovDiscreteFunction(hmm);
// G G C A
int[] observations = { 2, 2, 1, 0 };
double fwdLogLikelihood;
double[,] fwd = Accord.Statistics.Models.Fields.
ForwardBackwardAlgorithm.LogForward(function.Factors[0], observations, 0, out fwdLogLikelihood);
double bwdLogLikelihood;
double[,] bwd = Accord.Statistics.Models.Fields.
ForwardBackwardAlgorithm.LogBackward(function.Factors[0], observations, 0, out bwdLogLikelihood);
Assert.AreEqual(fwdLogLikelihood, bwdLogLikelihood, 1e-10); // -5.5614629361549142
Assert.AreEqual(-5.5614629361549142, fwdLogLikelihood, 1e-10);
Assert.IsFalse(double.IsNaN(fwdLogLikelihood));
}