public void ForwardBackwardGenericTest()
{
var discreteModel = CreateModel1();
var genericModel = CreateModel4();
int[] discreteObservations = { 2, 2, 1, 0 };
double[][] genericObservations =
{
new double[] { 2 }, new double[] { 2 },
new double[] { 1 }, new double[] { 0 }
};
double[] scaling = new double[3];
double discreteFwdLogLikelihood;
double[,] discreteFwd = ForwardBackwardAlgorithm.Forward(discreteModel,
discreteObservations, out scaling, out discreteFwdLogLikelihood);
double[,] discreteBwd = ForwardBackwardAlgorithm.Backward(discreteModel,
discreteObservations, scaling);
double genericFwdLogLikelihood;
double[,] genericFwd = ForwardBackwardAlgorithm.Forward(genericModel,
genericObservations, out scaling, out genericFwdLogLikelihood);
double[,] genericBwd = ForwardBackwardAlgorithm.Backward(genericModel,
genericObservations, scaling);
Assert.AreEqual(discreteFwdLogLikelihood, genericFwdLogLikelihood);
for (int i = 0; i < discreteFwd.GetLength(0); i++)
{
for (int j = 0; j < discreteFwd.GetLength(1); j++)
{
Assert.AreEqual(discreteFwd[i, j], genericFwd[i, j]);
Assert.AreEqual(discreteBwd[i, j], genericBwd[i, j]);
}
}
}