private IProduct BuildCombination(ParseTreeNode leftNode, ParseTreeNode rightNode, string op, object[,] bag) { ICouponDecomposable left = BuildProduct(leftNode, bag) as ICouponDecomposable; ICouponDecomposable right = BuildProduct(rightNode, bag) as ICouponDecomposable; switch (op) { case "+": return(DecomposableLinearCombination.Create(new[] { 1.0, 1.0 }, new[] { left, right })); case "-": return(DecomposableLinearCombination.Create(new[] { 1.0, -1.0 }, new[] { left, right })); default: throw new Exception("BUG should never get there !"); } }
private IProduct BuildWeighted(double weight, ParseTreeNode factorProductNode, object[,] bag) { var factor = BuildProduct(factorProductNode, bag) as ICouponDecomposable; return(DecomposableLinearCombination.Create(new[] { weight }, new[] { factor })); }