Accord.Tests.Statistics.Models.Fields.ForwardBackwardAlgorithmTest.LogForwardTest C# (CSharp) Method

LogForwardTest() private method

private LogForwardTest ( ) : void
return void
        public void LogForwardTest()
        {
            HiddenMarkovModel hmm = Accord.Tests.Statistics.Models.Markov.
                ForwardBackwardAlgorithmTest.CreateModel1();

            MarkovDiscreteFunction function = new MarkovDiscreteFunction(hmm);


            int[] observations = { 2, 2, 1, 0 };

            double[,] expected = Matrix.Log(Accord.Statistics.Models.Fields.
              ForwardBackwardAlgorithm.Forward(function.Factors[0], observations, 0));

            double[,] actual = Accord.Statistics.Models.Fields.
                ForwardBackwardAlgorithm.LogForward(function.Factors[0], observations, 0);

            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));
        }