protected override double Probability(int i, int index, int branch) { int modulo = Tree1.Count(i); int index1 = index % modulo; int index2 = index / modulo; int branch1 = branch % 3; int branch2 = branch / 3; double prob1 = Tree1.Probability(i, index1, branch1); double prob2 = Tree2.Probability(i, index2, branch2); return(prob1 * prob2 + _rho * _m[branch1, branch2] / 36.0); }