public void LogForwardBackwardGenericTest()
{
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 discreteFwdLogLikelihood;
double[,] discreteFwd = ForwardBackwardAlgorithm.LogForward(discreteModel,
discreteObservations, out discreteFwdLogLikelihood);
double discreteBwdLogLikelihood;
double[,] discreteBwd = ForwardBackwardAlgorithm.LogBackward(discreteModel,
discreteObservations, out discreteBwdLogLikelihood);
double genericFwdLogLikelihood;
double[,] genericFwd = ForwardBackwardAlgorithm.LogForward(genericModel,
genericObservations, out genericFwdLogLikelihood);
double genericBwdLogLikelihood;
double[,] genericBwd = ForwardBackwardAlgorithm.LogBackward(genericModel,
genericObservations, out genericBwdLogLikelihood);
Assert.AreEqual(discreteFwdLogLikelihood, discreteBwdLogLikelihood);
Assert.AreEqual(genericFwdLogLikelihood, genericBwdLogLikelihood);
Assert.AreEqual(discreteFwdLogLikelihood, genericBwdLogLikelihood);
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]);
}
}
}