private CreateExpression ( |
||
inputs | ||
return |
private Expression CreateExpression(Expression[] inputs) {
Contract.Requires(null != inputs);
Contract.Requires(inputs.Length > 0);
Contract.Requires(Contract.ForAll(inputs, x => x != null));
Contract.Ensures(Contract.Result<Expression>() != null);
var gen = ReductionExpressionGenerator;
var result = gen.GenerateOrThrow("SQUARE", inputs[0]);
for (int i = 1; i < inputs.Length; i++) {
result = gen.GenerateOrThrow("ADD", result, gen.GenerateOrThrow("SQUARE", inputs[i]));
}
return result;
}