private Decision GenCond(ArraySlice <DecisionTest> S) { double probability; int splitIndex = Split(S, out probability); int splitElement = S[splitIndex].Interval.First; RelationalBranchDecision result; RelationalOperator op; if (splitIndex == 1 && S[0].Interval.LongSize == 1) { op = RelationalOperator.Equal; result = new RelationalBranchDecision(op, S[0].Interval.First); } else if (splitIndex == (S.Count - 1) && S[splitIndex].Interval.LongSize == 1) { op = RelationalOperator.NotEqual; result = new RelationalBranchDecision(op, splitElement); } else { op = RelationalOperator.Less; result = new RelationalBranchDecision(op, splitElement); } result.Left = GenTree(S.SubSlice(0, splitIndex)); result.Right = GenTree(S.SubSlice(splitIndex)); return(result); }